51nod 1082 与7无关的数

来源:互联网 发布:dijkstra c语言 编辑:程序博客网 时间:2024/06/15 04:57

//f(n)=f(n-1)+a==7?0:a;#include<cstdio>#include<cstring>#include<algorithm>#include<string>using namespace std;const int maxn=1e6+5;long long f[maxn];int t,n,l;bool judge(int n){    while(n) {        if(n % 10 == 7)            return true;        n /= 10;    }    return false;}/*bool judge(int n){    char c[maxn];    string str;    sprintf(c,"%d",n);    str=c;    l=str.length();    char *result=find(c,c+l,'7');    if(result==c+l)        return true;    return false;}*/void init(){    f[1]=1;    for(int i=2;i<=1e6;i++){        if(!judge(i)&&i%7!=0)        f[i]=f[i-1]+(long long)i*i;        else        f[i]=f[i-1];    }}int main(){    init();    while(scanf("%d",&t)!=EOF){        for(int i=0;i<t;i++){            scanf("%d",&n);            printf("%lld\n",f[n]);        }    }    return 0;}

打表题,先打表存储到数组再进行程序的进入。还有拆分数字时还是老老实实地用求余和整除吧,,不能偷懒,时间复杂度真是爆炸。。