2024蓝桥杯真题:
- 好数
#include<iostream>
using namespace std;
const int N = 1e7 + 10;
int n, a,sum;
int main()
{
cin >> n;
for(int a = 1 ; a <= n; a++)
{
int tmp = 0, flag = 1, ans = a;
//注意不要直接更改a的值
for (int i = 1; i <= 7 && ans != 0; i++)
{
tmp = ans % 10;
ans = ans / 10;
//cout << tmp <<" "<< a << endl;
if (i % 2 == 0 && tmp % 2 == 0 || i % 2 != 0 && tmp % 2 != 0)
{
flag = 0;
}
else
{
flag = 1;
break;
}
}
if (!flag) sum++;
}
cout << sum << endl;
return 0;
}
- R格式
#include <iostream>
#include <string>
using namespace std;
const int N = 10000;
int n, a[N] ,cnt=0, lon;//lon记录小数点的位置
string d;
void cheng()
{
//做2的乘法
for (int i = 0; i < cnt; i++)
{
a[i] *= 2;
}
//考虑进位
for (int i = 0; i < cnt-1; i++)
{
a[i + 1] += a[i] / 10;
a[i] %= 10;
}
//处理最高位的进位
if (a[cnt-1] >= 10)
{
a[cnt] = a[cnt-1] / 10;
a[cnt-1] %= 10;
cnt++;
}
}
int main()
{
cin >> n >> d;
//存储到数组中
for (int i = d.size()-1; i >=0 ; i--)
{
if (d[i] != '.')
a[cnt++] = d[i]- '0';//3.14存入输出4 1 3
else
{
lon = d.size() - i - 1;//小数点并没有存到数组中
}
}
for (int i = 1; i <= n; i++)
cheng();
//四舍五入
if (a[lon-1] >= 5)//如果小数点后第一位大于5,就进位
{
a[lon] += 1;
}
for (int i = lon; i < cnt-1; i++)
{
a[i + 1] += a[i] / 10;
a[i] %= 10;
}
if (a[cnt - 1] >= 10)
{
a[cnt] = a[cnt - 1] / 10;
a[cnt - 1] %= 10;
}
for (int i = cnt-1 ; i >= lon; i--)
cout << a[i];
return 0;
}
11万+

被折叠的 条评论
为什么被折叠?



