2023蓝桥杯题解
洛谷2023蓝桥杯C题
洛谷2023蓝桥杯D题
C题 [蓝桥杯 2023 省 A] 平方差
[size=4
]题目描述
给定 L , R L,R L,R,问 L ≤ x ≤ R L \leq x \leq R L≤x≤R 中有多少个数 x x x 满足存在整数 y , z y,z y,z 使得 x = y 2 − z 2 x=y^2-z^2 x=y2−z2。
[size=4
]输入格式
输入一行包罗两个整数 L , R L,R L,R,用一个空格分隔。
[size=4
]输特别式
输出一行包罗一个整数满足题目给定条件的 x x x 的数目。
[size=4
]样例 #1
样例输入 #1
样例输出 #1
[size=4
]提示
【样例阐明】
- 1 = 1 2 − 0 2 1=1^2-0^2 1=12−02
- 3 = 2 2 − 1 2 3=2^2-1^2 3=22−12
- 4
= 2 2 − 0 2 4
=2^2-0^2 4
=22−02
- 5 = 3 2 − 2 2 5=3^2-2^2 5=32−22
【评测用例规模与约定】
对于 4
0 % 4
0 \% 4
0% 的评测用例, L , R ≤ 5000 L,R \leq 5000 L,R≤5000;
对于所有评测用例, 1 ≤ L ≤ R ≤ 1 0 9 1 \leq L \leq R \leq 10^9 1≤L≤R≤109。
第十四届蓝桥杯大赛软件赛省赛 C/C
3;
3; 大学 A 组 C
- #include<bits/stdc
- 3;
- 3;.h>using namespace std;int main(){ int L,R,temp,res=0; cin>>L>>R; if (L>R){ temp=L; L=R; R=temp; } for(int i=L;i<=R;i
- 3;
- 3;){ if(i<0) continue; if(i&1||i%4
- ==0) { res
- 3;
- 3;; } } cout<<res; }
复制代码[img]https://i-blog.csdnimg.cn/blog_migrate/ffef6a24
62e8
c15635962fef1f5931e6.png[/img]
D题 [蓝桥杯 2023 省 A] 更小的数
[size=4
]题目描述
[img]https://i-blog.csdnimg.cn/img_convert/08
8
9b101021e92bf01bd2e18
3f963fcb.png[/img]
小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 0∼9 构成的字符串,下标从 0 0 0 到 n − 1 n-1 n−1,你可以将其视作是一个具有 n n n 位的十进制数字 n u m num num,小蓝可以从 n u m num num 中选出一段一连的子串并将子串举行反转,最多反转一次。小蓝想要将选出的子串举行反转后再放入原位置处得到的新的数字 n u m n e w num_{new} numnew 满足条件 n u m n e w < n u m num_{new}<num numnew<num,请你帮他计算下一共有多少种差别的子串选择方案,只要两个子串在 n u m num num 中的位置不完全雷同我们就视作是差别的方案。
注意,我们答应前导零的存在,即数字的最高位可以是 0 0 0,这是合法的。
[size=4
]输入格式
输入一行包罗一个长度为 n n n 的字符串表现 n u m num num(
;仅包罗数字字符 0 ∼ 9 0 \sim 9 0∼9),从左至右下标依次为 0 ∼ n − 1 0 \sim n-1 0∼n−1。
[size=4
]输特别式
输出一行包罗一个整数表现答案。
[size=4
]样例 #1
样例输入 #1
样例输出 #1
[size=4
]提示
【样例阐明】
一共有 8
8
8
种差别的方案:
- 所选择的子串下标为 0 ∼ 1 0\sim1 0∼1,反转后的 n u m n e w = 120102 < 210102
num_{new} = 120102 < 210102
numnew=120102<210102
;
- 所选择的子串下标为 0 ∼ 2 0\sim2 0∼2,反转后的 n u m n e w = 012102 < 210102
num_{new} = 012102 < 210102
numnew=012102<210102
;
- 所选择的子串下标为 0 ∼ 3 0\sim3 0∼3,反转后的 n u m n e w = 101202 < 210102
num_{new} = 101202 < 210102
numnew=101202<210102
;
- 所选择的子串下标为 0 ∼ 4
0\sim4
0∼4
,反转后的 n u m n e w = 010122 < 210102
num_{new} = 010122 < 210102
numnew=010122<210102
;
- 所选择的子串下标为 0 ∼ 5 0\sim5 0∼5,反转后的 n u m n e w = 201012 < 210102
num_{new} = 201012 < 210102
numnew=201012<210102
;
- 所选择的子串下标为 1 ∼ 2 1\sim2 1∼2,反转后的 n u m n e w = 201102 < 210102
num_{new} = 201102 < 210102
numnew=201102<210102
;
- 所选择的子串下标为 1 ∼ 4
1\sim4
1∼4
,反转后的 n u m n e w = 201012 < 210102
num_{new} = 201012 < 210102
numnew=201012<210102
;
- 所选择的子串下标为 3 ∼ 4
3\sim4
3∼4
,反转后的 n u m n e w = 210012 < 210102
num_{new} = 210012 < 210102
numnew=210012<210102
。
【评测用例规模与约定】
对于 20 % 20\% 20% 的评测用例, 1 ≤ n ≤ 100 1 \le n \le 100 1≤n≤100;
对于 4
0 % 4
0\% 4
0% 的评测用例, 1 ≤ n ≤ 1000 1 \le n \le 1000 1≤n≤1000;
对于所有评测用例, 1 ≤ n ≤ 5000 1 \le n \le 5000 1≤n≤5000。
- #include<bits/stdc
- 3;
- 3;.h>using namespace std;string s;int lens,ans;bool if_(int l,int r){ for(int i = l,j = r;i <= j;i
- 3;
- 3;,j--) { if(s[i] > s[j]) return true; else if(s[j] > s[i]) return false; } return false;}int main(){ cin >> s; lens = s.length(); for(int i = 0;i < lens;i
- 3;
- 3;) { for(int j = i
- 3;1;j < lens;j
- 3;
- 3;) { if(if_(i,j)) ans
- 3;
- 3;; } } cout << ans; return 0;}
复制代码[img]https://i-blog.csdnimg.cn/blog_migrate/30c8
02329d74
c1db06b621bdac02aa2e.png[/img]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |