var code = "97666f8d-50bf-4adf-ba60-19992a7d3b57"
一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。求所有小于等于N的且与7无关的正整数的平方和。
例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。
输入格式
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000) 第2 - T + 1行:每行1个数N。(1 <= N <= 10^6)
输出格式
共T行,每行一个数,对应T个测试的计算结果。
输入样例
5
4
5
6
7
8
输出样例
30
55
91
91
155
数
#include<bits/stdc++.h>
using namespace std;
int t;
int i,k;
int n[1005];
long long sum[1000005]; //范围要大
int main (){
cin>>t;
for(i=1;i<=t;i++){
cin>>n[i];
}
for(long long j=1;j<=1000000;j++){//j的范围要用long long
int flag=1;//定义在里,每次重新赋值为1
int s=j;
if(s%7==0){
sum[j]=sum[j-1];
continue;
}
while(s>0){
if(s%10==7){
sum[j]=sum[j-1];
flag=0;
break;
}
s/=10;//降位
}
if(flag){
sum[j]=sum[j-1]+j*j;
}
}
for( k=1;k<=t;k++){
cout<<sum[n[k]]<<endl;
}
}
sum up:数组范围要考虑好,该用long long就用