51 nod 1082 与7无关的数

一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。求所有小于等于N的与7无关的正整数的平方和。

例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。

Input

第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)
第2 - T + 1行:每行1个数N。(1 <= N <= 10^6)

Output

共T行,每行一个数,对应T个测试的计算结果。

Input示例

5
4
5
6
7
8

Output示例

30
55
91
91

155

思路:

判断当前的是否符合题意,如果符合就加上,不符合就和之前的和是相等的。

#include<bits/stdc++.h>

using namespace std;

long long a[1000000+100];

int check(int x){  

   if(x%7==0){      

  return 1;    

 }      

while(x){      

  int t = x%10;    

    if(t==7){    

        return 1;      

  }        

x=x/10;  

   }    

 return 0;

}

int main() {      long long  T,n;      memset(a,0,sizeof(a));      scanf("%lld",&T);      for(long long i=1;i<=1000000+10;i++){//不知道为什么,int 就 w,long long 就可以         if(check(i)){            a[i]=a[i-1];         }         else{             a[i]=a[i-1]+i*i;         }      }      while(T--){         scanf("%lld",&n);         printf("%lld\n",a[n]);      } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值