T-与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个测试的计算结果。Sample Input
5
4
5
6
7
8
Sample Output
30
55
91
91
155

#include <cstdio>
 #include <iostream>
 #include <cstring>

  using namespace std;
  typedef long long ll;      //定义了一个longlong型的ll,详细typedef的用法
                          //https://blog.csdn.net/lioncatch/article/details/80621248
  ll a[1000005];       //创造了一个longlong数组
  ll solve(ll x)       //函数功能为 判断是否符合题意的数
  {
      if(x%7==0) return 1;
      int ans=0;
      while(x>1)
     {
         int t=x%10;
         if(t==7)
         {
             ans=1;
             break;
         }
         x/=10;
     }
     if(ans) return 1;
      return 0;
 }

 int main()
 {
    ll T,n;
     memset(a,0,sizeof(a));  
     scanf("%lld",&T);
     for(ll i=1;i<=1000000;i++)//a数组里面存了从1到100000的每一个答案,需要                                            //时直接a[i]调用
     {
         if(!solve(i))
         a[i]=a[i-1]+i*i;
         else a[i]=a[i-1];
     }
     while(T--)
     {
         scanf("%lld",&n);
         printf("%lld\n",a[n]);
     }
     return 0;
 }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值