51nod 1082 与7无关的数

来源:互联网 发布:papi 知乎 编辑:程序博客网 时间:2024/06/05 06:58
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1082
题目:一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。求所有小于等于N的与7无关的正整数的平方和。
例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。
N的范围为1e6,所以用高精度打表。
妈妈问我为什么刷水题

#include <iostream>#include<bits/stdc++.h>#define N 1000002#define M 18using namespace std;int d[N][M];int ok(int t){    while(t)    {        if(t%10==7) return 0;        t/=10;    }    return 1;}void init(){    memset(d[0],0,sizeof(d[0]));    for(int i=1;i<N;i++)        if(i%7&&ok(i))        {            long long t=(long long)i*i;            int jw=0;            for(int j=0;j<M;j++)            {                d[i][j]=(d[i-1][j]+t%10+jw)%10;                jw=(d[i-1][j]+t%10+jw)/10;                t/=10;            }        }        else        {            for(int j=0;j<M;j++)                d[i][j]=d[i-1][j];        }}int main(){    init();    int T;    scanf("%d",&T);    while(T--)    {        int n;        scanf("%d",&n);        int t=M-1;        while(d[n][t]==0)   t--;        for(int i=t;i>=0;i--)            cout<<d[n][i];        cout<<endl;    }}

0 0
原创粉丝点击