主要i也要定义成long long类型,否则i*i时数据会溢出的。
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int f(int a)
{
char str[10];
sprintf(str,"%d",a);
int i;
for(i=0;i<strlen(str);i++)
if(str[i]=='7')
return 0;
if(a%7==0)
return 0;
return 1;
}
long long dp[1000001];
int main()
{
int T;
cin>>T;
memset(dp,0,sizeof(0));
for(long long i=1;i<1000001;i++)
dp[i]=dp[i-1]+(f(i)==1?i*i:0);
while(T--)
{
int a;
cin>>a;
cout<<dp[a]<<endl;
}
return 0;
}