C - 与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个测试的计算结果。

Sample Input

5
4
5
6
7
8

Sample Output

30
55
91
91
155

记忆化遍历,不然很容易超时 

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#define M 1000010
int  a[M];
long long i;
long long sum[M];
using namespace std;
int main()
{
	sum[0]=0;
	memset(a,0,sizeof(a));
	for(i=1;i<=1000000;i++)
	{
		long long temp=i;
		if(temp%7==0)
		{
			a[i]=1;
		}
		else
		{
			while(temp)
			{
				if(temp%10==7)
				{
					a[i]=1;
					break;
				}
				temp/=10;
			}
		}
		if(a[i]==0)
		{
			sum[i]=sum[i-1]+i*i;
		}
		else sum[i]=sum[i-1];
	}
	long long  x;
	int n;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%lld",&x);
		printf("%lld\n",sum[x]);
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章