/*#include<stdio.h>//开始以为是大数问题,写了一大通,不行,不是大数阿,由该,又超时!!!打表!!!!
#include<string.h>
int a[1000];
int main()
{
int T,p;
long i,j;
int sign,temp;
int a[1000];
int ff,len;
scanf("%d",&T);
while(T--)
{
sign=0;
scanf("%d",&p);
i=7;
for(i=0;i<90000;)
{
j=0;
len=0;
ff=0;
temp=i;
while(temp)
{
a[j]=temp%10;
if(a[j]==7) ff=1;
temp/=10;
j++;
len++;
}
if(i%7==0||ff==1)
{
sign++;
if(sign==p)
{printf("%ld\n",i-sign+1);break;}
if(sign!=p) {
i++;
}
}
else {sign=0; i++;}
}
}return 0;
}*/
#include<stdio.h> //上面的算法必须超时,
int main()
{
long n, t;
scanf( "%d", &t);
while(t--)
{
scanf( "%d", &n);
if(n == 1)printf( "7\n");
else if(n == 2)printf( "27\n");
else if(n <= 10)printf( "70\n");
else if(n <= 11)printf( "270\n");
else if(n <= 100)printf( "700\n");
else if(n <= 101)printf( "2700\n");
else if(n <= 1000)printf( "7000\n");
else if(n <= 1002)printf( "26999\n");
else if(n <= 10000)printf( "70000\n");
else if(n <= 10001)printf( "270000\n");
else if(n <= 100000)printf( "700000\n");
else if(n <= 100001)printf( "1699999\n");
else if(n <= 1000000)printf( "7000000\n");
else if(n <= 1000001)printf( "27000000\n");
else if(n <= 10000000)printf( "70000000\n");
else if(n <= 10000001)printf( "270000000\n");
else printf( "700000000\n");
}
return 0;
}
第二种方法很奇妙,但我不知道如何才能考虑得如此详尽,希望有高人指点。
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3193
#include<string.h>
int a[1000];
int main()
{
int T,p;
long i,j;
int sign,temp;
int a[1000];
int ff,len;
scanf("%d",&T);
while(T--)
{
sign=0;
scanf("%d",&p);
i=7;
for(i=0;i<90000;)
{
j=0;
len=0;
ff=0;
temp=i;
while(temp)
{
a[j]=temp%10;
if(a[j]==7) ff=1;
temp/=10;
j++;
len++;
}
if(i%7==0||ff==1)
{
sign++;
if(sign==p)
{printf("%ld\n",i-sign+1);break;}
if(sign!=p) {
i++;
}
}
else {sign=0; i++;}
}
}return 0;
}*/
#include<stdio.h> //上面的算法必须超时,
int main()
{
long n, t;
scanf( "%d", &t);
while(t--)
{
scanf( "%d", &n);
if(n == 1)printf( "7\n");
else if(n == 2)printf( "27\n");
else if(n <= 10)printf( "70\n");
else if(n <= 11)printf( "270\n");
else if(n <= 100)printf( "700\n");
else if(n <= 101)printf( "2700\n");
else if(n <= 1000)printf( "7000\n");
else if(n <= 1002)printf( "26999\n");
else if(n <= 10000)printf( "70000\n");
else if(n <= 10001)printf( "270000\n");
else if(n <= 100000)printf( "700000\n");
else if(n <= 100001)printf( "1699999\n");
else if(n <= 1000000)printf( "7000000\n");
else if(n <= 1000001)printf( "27000000\n");
else if(n <= 10000000)printf( "70000000\n");
else if(n <= 10000001)printf( "270000000\n");
else printf( "700000000\n");
}
return 0;
}
第二种方法很奇妙,但我不知道如何才能考虑得如此详尽,希望有高人指点。
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3193