题意
一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。求所有小于等于N(1 <= N <= 10^6)的与7无关的正整数的平方和。
例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。
解题思路
求出所有与7无关的数,并求所有小于等于N的与7无关的正整数的平方和
注意,要使用long long
参考代码
#include <iostream>
using namespace std;
typedef long long ll;
#define MAXN 1000000+5
ll a[MAXN];
bool check(int x){
if (x%7==0) return 0;
while (x){
if (x%10==7) return 0;
x/=10;
}
return 1;
}
int main(){
ll ans=0;
for (int i=1;i<MAXN;i++){
if (check(i)==1) ans+=1LL*i*i;
a[i]=ans;
}
int t,n;
cin>>t;
while (t--){
cin>>n;
cout<<a[n]<<endl;
}
return 0;
}