朴素的筛法,考场写的没有做优化
#include <iostream>
using namespace std;
const int N = 1e7 + 10;
bool st[N];
void get_good_nums(int n){
int t = n, len = 0;
while(t){
len ++;
t /= 10;
}
// 枚举位数
int b = 1;
bool flag = true; // 从奇数开始
for(int i = 1; i <= len; ++ i){
for(int j = b; j <= n; ++ j){
if(flag){
if((j / b % 10) % 2 == 0) st[j] = true;
}else{
if((j / b % 10) % 2 != 0) st[j] = true;
}
}
flag = !flag;
b *= 10;
}
}
int main(){
int n;
cin >> n;
get_good_nums(n);
int ans = 0;
for(int i = 1; i <= n; ++ i)
// if(!st[i]) cout << i << " ";
if(!st[i]) ans ++;
cout << ans;
return 0;
}
1 回复
0 转发
0 喜欢
11 阅读



