1082 与7无关的数(模拟-打表)

题目来源: 有道难题
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
 收藏
 关注
一个正整数,如果它能被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>
#define ll long long int
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
ll k[1000005];
ll sum[1000005];
void Edge(){
  mem(k);
  mem(sum);
  for(ll i=1;i<=1000000;i++){
    if(i%7==0){
      k[i]=1;
      sum[i]=sum[i-1];
      continue;
    }
    ll m=i;
    bool prime=true;
    while(m){
      if(m%10==7){
        k[i]=1;
        prime=false;
        break;
      }else{
        m/=10;
      }
    }
    if(prime)
      sum[i]=sum[i-1]+i*i;
    else
      sum[i]=sum[i-1];
  }
}
int main(){
    int n;
    scanf("%d",&n);
    Edge();
    int x;
    while(n--){
      scanf("%d",&x);
      printf("%lld
",sum[x] );
    }
    return 0;
}

  

永远渴望,大智若愚(stay hungry, stay foolish)
原文地址:https://www.cnblogs.com/h-hkai/p/7486487.html