1. 程式人生 > >51nod 1082 與7無關的數

51nod 1082 與7無關的數

一個正整數,如果它能被7整除,或者它的十進位制表示法中某個位數上的數字為7,則稱其為與7相關的數。求所有小於等於N的與7無關的正整數的平方和。

例如:N = 8,<= 8與7無關的數包括:1 2 3 4 5 6 8,平方和為:155。

打表然後再二分查詢答案

#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1e6+10;
int table[maxn];

void init()
{
	for(int i=7;i<maxn;i++)
	{
		if(!(i%7)) table[i]=1;
		int temp=i;
		while(temp)
		{
			int tem;
			tem=temp%10;
			temp/=10;
			if(tem==7)
			{
				table[i]=1;
				break;
			}
		}
	}
}


int main()
{
	init();
	//for(int i=7;i<=70;i++)
	//if(!table[i]) printf("%d\n",i);
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n;
		scanf("%d",&n);
		long long ans=0;
		for(long long i=1;i<=n;i++)
		{
			if(!table[i]) ans+=(i*i);
		}
		printf("%lld\n",ans);
	}
}