与7无关的数

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就用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值