一个正整数,如果它能被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);
}
}