题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1082
题意:找出小于等于n的与7无关的数的个数。与7无关的数:数字中不能含7,且不是7的倍数。
思路:按条件打表
#include<cstdio>
#include<queue>
#include<iostream>
#include<vector>
#include<map>
#include<cstring>
#include<string>
#include<set>
#include<stack>
#include<cmath>
#include<algorithm>
#define cle(a) memset(a,0,sizeof(a))
#define inf(a) memset(a,ox3f,sizeof(a))
#define ll long long
#define Rep(i,a,n) for(int i=a;i<=n;i++)
using namespace std;
const int INF = ( 2e9 ) + 2;
const int maxn = 1e6+10;
ll ans[maxn];
void init()
{
for(int i=1;i<=1e6+2;i++)
{
if(i%7==0)
ans[i]=ans[i-1];
else
{
int c=i,f=0;
while(c)
{
int t=c%10;
if(t==7)
{
f=1;
break;
}
c/=10;
}
if(f)
ans[i]=ans[i-1];
else ans[i]=ans[i-1]+1LL*i*i;
}
}
}
int main()
{
init();
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
printf("%lld\n",ans[n]);
}
}