这道题可以说很水吧(跟其它题比较简单太多了)
考场上想到了埃氏筛,也是这么做的,预处理所有的可能位置。测试了大样例,感觉像是1s内能跑完(这个坑人的CCF样例水数据。。。)所以考场上感觉切了。
考场代码:
#include<bits/stdc++.h>
using namespace std;
int a[10000010];
void work1(){
for(register int i(1) ; i<=200050 ; i=-~i){
if(i%7 == 0) a[i] = 1;
else{
int n = i;
while(n>0){
if(n%10 == 7){
for(register int j=i ; j<=200050 ; j+=i){
a[j] = 1;
}
}
n/=10;
}
}
}
}
void work2(){
for(register int i(1) ; i<=1e7 ; i=-~i){
if(i%7 == 0) a[i] = 1;
else{
int n = i;
while(n>0){
if(n%10 == 7){
for(register int j=i ; j<=1e7 ; j+=i){
a[j] = 1;
}
}
n/=10;
}
}
}