Skip to main content

第十二届蓝桥杯省赛第二场C++B组真题

1.特殊年份

题目

今年是 20212021 年,20212021 这个数字非常特殊,它的千位和十位相等,个位比百位大 11,我们称满足这样条件的年份为特殊年份。

输入 55 个年份,请计算这里面有多少个特殊年份。

输入格式

输入 55 行,每行一个 44 位十进制数(数值范围为 1000100099999999),表示一个年份。

输出格式

输出一个整数,表示输入的 55 个年份中有多少个特殊年份。

输入样例:

2019
2021
1920
2120
9899

输出样例:

2

样例解释

2021202198999899 是特殊年份,其它不是特殊年份。

代码

#include <iostream>

using namespace std;

int main()
{
int m = 5, ans = 0;
string s;
while (m --) {
cin >> s;
if (s[0] == s[2] && s[3] == s[1] + 1) ans++;
}
cout << ans;
return 0;
}

2.小平方

题目

小蓝发现,对于一个正整数 nn 和一个小于 nn 的正整数 vv,将 vv 平方后对 nn 取余可能小于 nn 的一半,也可能大于等于 nn 的一半。

请问,在 11n1n−1 中,有多少个数平方后除以 nn 的余数小于 nn 的一半。

例如,当 n=4n=4 时,1,2,31,2,3 的平方除以 44 的余数都小于 44 的一半。

又如,当 n=5n=5 时,1,41,4 的平方除以 55 的余数都是 11,小于 55 的一半。

2,32,3 的平方除以 55 的余数都是 44,大于等于 55 的一半。

输入格式

输入一行包含一个整数 nn

输出格式

输出一个整数,表示满足条件的数的数量。

数据范围

1n100001≤n≤10000

输入样例:

5

输出样例:

2

代码

#include <iostream>

using namespace std;

int main() {
int n, ans;
cin >> n;
for (int i = 1; i < n; i++)
if ((i * i) % n < (double) n / 2) ans ++;
cout << ans;
return 0;
}