51Nod 1082 与7无关的数

一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。求所有小于等于N的与7无关的正整数的平方和。
 
例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)
第2 - T + 1行:每行1个数N。(1 <= N <= 10^6)
Output
共T行,每行一个数,对应T个测试的计算结果。
Input示例
5
4
5
6
7
8
Output示例
30
55
91
91
155

思路:打表
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <stdio.h>
 4 #include <cstring>
 5 using namespace std;
 6 #define ll long long
 7 ll a[1000005];
 8 ll solve(ll x)
 9 {
10     if(x%7==0) return 1;
11     int flag=0;
12     while(x>1){
13         int t=x%10;
14         if(t==7){
15             flag=1;
16             break;
17         }
18         x/=10;
19     }
20     if(flag) return 1;
21      return 0;
22 }
23 int main()
24 {
25     ll T,n;
26     memset(a,0,sizeof(a));
27     scanf("%lld",&T);
28     for(ll i=1;i<=1000000;i++){
29         if(!solve(i))
30         a[i]=a[i-1]+i*i;
31         else a[i]=a[i-1];
32     }
33     while(T--){
34         scanf("%lld",&n);
35         printf("%lld\n",a[n]);
36     }
37     return 0;
38 }

 

 
posted @ 2017-07-26 13:59  wydxry  阅读(236)  评论(0编辑  收藏  举报
Live2D