51Nod 1082 传送门
预处理的时候有种埃氏筛的感觉哇……记笔记记笔记
#include<iostream> #include<algorithm> #include<vector> #include<string.h> #include<stack> using namespace std; typedef long long ll; const int MAX=1e6+5; int n,t; bool a[MAX]; long long sum[MAX]; void init() { memset(a,0,sizeof(a)); for(int i=7;i<MAX;i+=7) //能被7整除的 a[i]=1; for(int i=1;i<MAX;i*=10) //各个数位上有7的 { int te=i*10; for(int j=i*7;j<MAX;j+=te) for(int k=0;k<i;k++) a[k+j]=1; } sum[0]=0; for(long long i=1;i<MAX;i++) { if(!a[i]) sum[i]=sum[i-1]+i*i; else sum[i]=sum[i-1]; } } int main() { ios::sync_with_stdio(false ); cin>>t; init(); while(t--) { cin>>n; cout<<sum[n]<<endl; } return 0; }