51nod 1082 与7无关的数

来源:互联网 发布:nginx conf 配置php 编辑:程序博客网 时间:2024/06/04 17:43

题目链接:

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1082

题解:

直接暴力, 把1e6的所有的数据进行预处理就行了(记得数据范围比较大,用long long)

代码:

#include <cstdio>#include <cstring>#include <algorithm> using namespace std;#define met(a,b) memset(a,b,sizeof(a))typedef long long ll;const int maxn = 1e6;ll num[maxn+10];ll sum[maxn];void init(){    met(num,0);    for(ll i=1;i<=maxn;i++)    {        if(i%7==0)            num[i]=1;    }    for(ll i=1;i<=maxn;i++)    {        if(num[i])            continue;        else        {            int flag=0;            ll name=i;            while(name)            {                int  temp=name%10;                if(temp==7)                {                    flag=1;                    break;                }                name/=10;            }        if(flag)            num[i]=1;        }    }    met(sum,0);    ll ans=0;    for(ll i=1;i<=maxn;i++)    {        if(num[i]==0)            ans+=i*i;        sum[i]=ans;    }}int main(){    init();    int t;    scanf("%d",&t);    while(t--)    {        ll n;        scanf("%lld",&n);        printf("%lld\n",sum[n]);    }}


0 0