kazm_m の部屋
ProjectEuler 1~
最終更新:
kazm_m
-
view
基本的にC言語で記述
問題1
#include<stdio.h>
int main(){
int sum=0;
int i;
for(i=1;i<1000;i++){
if(i%3 == 0 || i%5==0)sum+=i;
}
printf("Ans=%d\n",sum);
}
問題2
#include<stdio.h>
int main(){
int prev=1,now=2,next=3;
int sum=2,i;
for(i=3;next<4000000;i++){
if(next%2==0)sum+=next;
prev=now;
now=next;
next+=prev;
}
printf("Ans=%d\n",sum);
return 0;
}
問題3
VisualStudioでビルド
cygwinでは通らなかった(longlong 64bitが原因?)
#include<stdio.h>
int main(){
long long a;
a=600851475143;
int ma=0,i;
for(i=2;i*i<=a;i++){
if(a%i==0){
a/=i;
if(ma<i)ma=i;
i=1;
}
}
if(ma<a){ma=a;}
printf("Ans=%d\n",ma);
return 0;
}
問題4
#include<stdio.h>
int check(int a){
int keta=0,i;
int b[8]={0,0,0,0,0,0,0,0};
while(a>=1){
b[keta++]=a%10;
a/=10;
}
for(i=0;i<keta;i++){
if(b[i]!=b[keta-1-i])return -1;
}
return 1;
}
int main(){
int i,j,ma=0;
for(i=999;i>99;i--){
for(j=i;j>99;j--){
if(check(i*j)==1 && ma<i*j ){
ma=i*j;
printf("%d×%d=%d\n",i,j,i*j);
}
}
}
printf("Ans=%d\n",ma);
return 0;
}
問題5
#include<stdio.h>
int a[21];
int check(int b){
int tmp[21];
int i,j;
for(i=0;i<21;i++)tmp[i]=0;
for(i=2;i*i<=b;i++){
if(b%i==0){
b/=i;
tmp[i]++;
i=1;
}
}
tmp[b]++;
for(i=2;i<21;i++){
if(tmp[i]>a[i])a[i]=tmp[i];
}
return;
}
int main(){
int i,j,tmp,sum=1;
for(i=0;i<21;i++)a[i]=0;
for(i=2;i<21;i++){
check(i);
}
for(i=2;i<21;i++){
for(j=0,tmp=1;j<a[i];j++){
tmp*=i;
}
sum*=(tmp);
}
printf("Ans=%d\n",sum);
return 0;
}
問題6
#include<stdio.h>
int main(){
int i;
double re1=0,re2=0;
for(i=1;i<=100;i++){
re1+=i;
re2+=i*i;
}
printf("%10.0f\n",re1*re1-re2);
return 0;
}
問題7
/*まったく意味のない関数化w*/
#include<stdio.h>
#define SEARCH 10001
int sosu(int a){
int i;
for(i=2;i*i<=a;i++){
if(a%i==0)return 0;
}
return 1;
}
int search_sosu(int a){
int i,count=1;
if(a==1)return 2;
for(i=3;!(count==a);i+=2){
if(sosu(i)==1)count++;
}
return i-2;
}
int main(){
printf("Ans=%d\n",search_sosu(SEARCH));
return 0;
}
問題8
#include<stdio.h>
int suti(char ch){
int i;
char a[10]={'0','1','2','3','4','5','6','7','8','9'};
for(i=0;i<10;i++){
if(a[i]==ch)return i;
}
return -1;
}
int main(){
char c;
int i,ma=1,now=1,a[6]={1,1,1,1,1,1},tmp;
while(EOF!=scanf("%c ",&c)){
a[5]=suti(c);
for(i=1,now=1;i<6;i++){
now*=a[i];
}
if(ma<now)ma=now;
for(i=0;i<5;i++){
tmp=a[i];
a[i]=a[i+1];
a[i+1]=tmp;
}
}
printf("Ans=%d\n",ma);
return 0;
}
問題9
#include<stdio.h>
int main(){
int i,j,tmp;
for(i=1;i<333;i++){
for(j=i+1;j<500;j++){
tmp=1000-i-j;
if(tmp<=j)break;
if(i*i+j*j==tmp*tmp)printf("%d",i*j*tmp);
}
}
return 0;
}
問題10
#include<stdio.h>
int sosu(int a){
int i;
for(i=2;i*i<=a;i++){
if(a%i==0)return -1;
}
return 0;
}
int main(){
int i,j;
long long sum=2;
for(i=3;i<=2000000;i++){
if(sosu(i)==0)sum+=i;
}
printf("SUM=%lld\n",sum);
return 0;
}
問題11
#include<stdio.h>
int main(){
int i,j,ma=1,now,a[20][20];
for(i=0;i<20;i++){
for(j=0;j<20;j++){
scanf("%d ",&a[i][j]);
}
}
for(i=0;i<20;i++){
for(j=0;j<20;j++){
if(j<=16){
now=a[i][j]*a[i][j+1]*a[i][j+2]*a[i][j+3];
if(ma<now)ma=now;
}
if(i<=16){
now=a[i][j]*a[i+1][j]*a[i+2][j]*a[i+3][j];
if(ma<now)ma=now;
}
if(i<=16 && j<=16){
now=a[i][j]*a[i+1][j+1]*a[i+2][j+2]*a[i+3][j+3];
if(ma<now)ma=now;
}
if(i<=16 && j>=3){
now=a[i][j]*a[i+1][j-1]*a[i+2][j-2]*a[i+3][j-3];
if(ma<now)ma=now;
}
if(i>=3 && j<=16){
now=a[i][j]*a[i-1][j+1]*a[i-2][j+2]*a[i-3][j+3];
if(ma<now)ma=now;
}
}
}
printf("Ans=%d\n",ma);
return 0;
}
問題12
#include<stdio.h>
int check(int a){
int re=2,i;
for(i=2;i*i<=a;i++){
if(a%i==0)re+=2;
if(i*i==a)re-=1;
}
return re;
}
int main(){
int i,now=0;
for(i=1;;i++){
now+=i;
if(check(now)>=501){
printf("Ans=%d\n",now);
break;
}
}
return 0;
}
問題13
#include<stdio.h>
int suti(char ch){
char tmp[10]={'0','1','2','3','4','5','6','7','8','9'};
int k;
for(k=0;k<10;k++){
if(tmp[k]==ch)return k;
}
return 0;
}
int main(){
int a[60],i,j;
char ch;
for(i=0;i<60;i++)a[i]=0;
for(i=0;i<100;i++){
for(j=0;j<50;j++){
scanf("%c ",&ch);
//printf("%d",suti(ch));
a[49-j]+=suti(ch);
}
//printf("\n");
}
for(i=0;i<59;i++){
a[i+1]+=a[i]/10;
a[i]%=10;
}
for(i=59;;i--){
if(a[i]!=0){
for(j=0;j<10;j++)printf("%d",a[i-j]);
break;
}
}
return 0;
}
問題14
#include<stdio.h>
int a[1000001];
int check(int t){
long long tmp=t;
//printf("%lld\n",tmp);
int count=0;
if(a[t]!=0)return a[t];
do{
if(tmp%2==0){
tmp/=2;
}else{
tmp=tmp*3+1;
}
count++;
}while(tmp>1000000);
a[t]=check(tmp)+count;
return a[t];
}
int main(){
int i,ma=-1;
int result=-1;
for(i=1000000;i>1;i--){
a[i]=0;
}
a[1]=1;
for(i=1000000;i>1;i--){
a[i]=check(i);
}
for(i=1000000;i>1;i--){
if(ma<a[i]){
ma=a[i];
printf("%d %d\n",ma,i);
}
}
return 0;
}
問題15
#include<stdio.h>
#define X 20
#define Y 20
int main(){
int i,j;
long long a[100][100];
for(i=0;i<100;i++){
for(j=0;j<100;j++)a[i][j]=0;
}
a[0][0]=1;
for(i=0;i<=Y;i++){
for(j=0;j<=X;j++){
if(j>0)a[i][j]+=a[i][j-1];
if(i>0)a[i][j]+=a[i-1][j];
}
}
printf("Ans=%lld\n",a[Y][X]);
return 0;
}
問題16
#include<stdio.h>
#define KETA 500
int a[KETA];
void cal(int aa,int bb){
int i,j,count=0,flag=0;
int tmp=aa;
for(i=0;i<KETA;i++)a[i]=0;
while(tmp>=1){
a[count++]=tmp%10;
tmp/=10;
}
for(i=0;i<bb-1;i++){
for(j=0;j<KETA;j++)a[j]*=aa;
for(j=0;j<KETA-1;j++){
a[j+1]+=a[j]/10;
a[j]%=10;
}
}
// for(i=KETA-1;i>=0;i--){
// if(a[i]!=0)flag=1;
// if(flag==1)printf("%d",a[i]);
// }
}
int main(){
int i,sum=0;
cal(2,1000);
for(i=0;i<KETA;i++)sum+=a[i];
printf("Ans=%d\n",sum);
return 0;
}
問題17
#include<stdio.h>
int moji_num(int in){
int re=0;
int a[20]={0,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,7,9,8,8};
int b[10]={0,0,6,6,5,5,5,7,6,6};
if(in%100 < 20)re+=a[in%100];
else re+=a[in%10];
re+=b[(in/10)%10];
if(in>=100){
re+=a[in/100];
re+=7;
if(in%100 != 0)re+=3;
}
if(in==1000)re++;
return re;
}
int main(){
int i,sum=0;
for(i=1;i<=1000;i++){
printf("%d =%d文字\n",i,moji_num(i));
sum+=moji_num(i);
}
printf("%d\n",sum);
return 0;
}
問題18
#include<stdio.h>
int main(){
int a[2][200];
int lim=1,ma=0,tmp;
int i,j;
for(i=0;i<2;i++){
for(j=0;j<200;j++){
a[i][j]=0;
}
}
i=0;
j=0;
while(EOF !=scanf("%d",&tmp)){
a[1][i++]=tmp;
if(i<lim)continue;
for(i=0;i<200;i++){
if(i==0 || a[0][i-1]<a[0][i]){
a[1][i]+=a[0][i];
}else{
a[1][i]+=a[0][i-1];
}
}
for(i=0;i<200;i++){
a[0][i]=a[1][i];
}
lim++;
i=0;
}
for(i=0;i<200;i++){
if(a[0][i]==0)break;
if(ma<a[0][i]) ma=a[0][i];
}
printf("%d\n",ma);
return 0;
}
問題19
#include<stdio.h>
int uruu(int year){
if(year%4!=0 || (year%100==0 && year%400!=0))return 0;
return 1;
}
int main(){
int cl[12]={31,31,28,31,30,31,30,31,31,30,31,30};//12月・1月・…・11月
int now=1,sum=0;
int i,j;
for(i=1900;i<2001;i++){
for(j=1;j<=12;j++){
if(i!=1900 && now%7==0)sum++;
now+=cl[j%12];
if(j==2)now+=uruu(i);
}
}
printf("%d\n",sum);
return 0;
}
問題20
#include<stdio.h>
int a[2][500];
void cal(int b){
int i,j=0,k;
for(i=0;i<500;i++)a[1][i]=0;
while(b>=1){
for(i=0;i<500;i++)a[1][i+j] += (a[0][i]*(b%10));
b/=10;
j++;
}
for(i=0;i<499;i++){
a[1][i+1]+=(a[1][i]/10);
a[1][i] %= 10;
}
for(j=0;j<500;j++)a[0][j]=a[1][j];
}
int main(){
int i,j,k,sum=0;
for(i=0;i<2;i++){
for(j=0;j<500;j++)a[i][j]=0;
}
a[0][0]=1;
for(i=1;i<=100;i++){
cal(i);
printf("*%d=",i);
for(k=499;a[0][k]==0;k--){};
for(j=k;j>=0;j--)printf("%d",a[0][j]);
printf("\n");
}
for(j=499;j>0;j--)sum+=a[0][j];
printf("\n%d\n",sum);
return 0;
}
問題21
#include<stdio.h>
int cal(int n){
int i;
int sum=1;
for(i=2;i*i<=n;i++){
if(n%i==0){
sum+=i;
if(i!=n/i)sum+=n/i;
}
}
return sum;
}
int main(){
int i,j;
int sum=0;
int a[10000];
for(i=0;i<10000;i++)a[i]=0;
for(i=1;i<10000;i++){
if(i==cal(cal(i)) && i!=cal(i) ){
a[i]=1;
sum+=i;
printf("%d %d %d\n",i,cal(i),cal(cal(i)));
}
}
printf("%d\n",sum);
return 0;
}
問題22
#include<stdio.h>
#include<string.h>
char ch[6000][20];
int main(){
int i=0,j=0,k,sum=0,now;
char tmp[20];
char tmp2;
while(EOF!=scanf("%c",&tmp2)){
if(tmp2==','|| tmp2=='"'){
if(j!=0){
j=0;
strcpy(&ch[i++][0],tmp);
}
continue;
}
tmp[j++]=tmp2;
tmp[j]='\0';
}
for(j=i-1;j>0;j--){
for(k=0;k<j;k++){
if(strcmp(&ch[k][0],&ch[k+1][0])>0){
strcpy(tmp,&ch[k][0]);
strcpy(&ch[k][0],&ch[k+1][0]);
strcpy(&ch[k+1][0],tmp);
}
}
}
for(j=0;j<i;j++){
now=0;
for(k=0;ch[j][k]!='\0';k++) now+=ch[j][k]-64;
sum+=(j+1)*now;
printf("%d*%d=%d 合計%d %s\n",j+1,now,now*(j+1),sum,&ch[j][0]);
}
printf("%d\n",sum);
return 0;
}
問題23
#include<stdio.h>
#define MAX_NUM 28124
int search(int n){
int sum=1,i;
for(i=2;i*i<=n;i++){
if(n%i==0){
sum+=i;
if(i*i!=n)sum+=n/i;
}
}
return (n<sum);
}
int main(){
int a[2][MAX_NUM];
int i,j;
int sum=0;
for(i=1;i<MAX_NUM;i++){
a[1][i]=0;
a[0][i]=search(i);
}
for(i=1;i<MAX_NUM;i++){
if(a[0][i]==0)continue;
for(j=i;i+j<MAX_NUM;j++){
if(a[0][j]==0)continue;
a[1][i+j]=1;
}
}
for(i=0;i<MAX_NUM;i++){
if(a[1][i]==0){
sum+=i;
printf("now=%d sum=%d\n",i,sum);
}
}
printf("%d\n",sum);
return 0;
}
問題24
#include<stdio.h>
int a[10];
int kaizyo(int n){
if(n<=1)return 1;
return n*kaizyo(n-1);
}
void search(int n,int size){
if(size==0)return;
int i,tmp=0;
tmp= n / (kaizyo(size-1));
for(i=0;;i++){
if(a[i]==0)tmp--;
if(tmp<0){
a[i]=1;
printf("%d ",i);
break;
}
}
search(n%kaizyo(size-1),size-1);
}
int main(){
int i;
for(i=0;i<10;i++)a[i]=0;
scanf("%d",&i);
search(i-1,10);
return 0;
}
問題25
#include<stdio.h>
int main(){
int a[1000],b[1000];
int i,count=2,tmp;
for(i=0;i<1000;i++){
a[i]=0;
b[i]=0;
}
a[0]=1;
b[0]=1;
while(b[999]==0){
for(i=0;i<1000;i++){
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
tmp=a[i];
a[i]=b[i];
b[i]=tmp;
}
count++;
}
printf("%d\n",count);
return 0;
}
問題26
#include<stdio.h>
int zyunkan(int n){
int i,j;
int now=1;
int a[1000];
for(j=0;j<1000;j++)a[j]=0;
a[1]=1;
for(i=2;;i++){
now*=10;
now%=n;
if(now==0)return 0;
if(a[now]!=0)return i-a[now];
a[now]=i;
}
return -1;
}
int main(){
int i,ma=0;
int a[1000];
for(i=2;i<1000;i++){
if (ma<zyunkan(i)){
ma=zyunkan(i);
printf("d = %d のとき %d\n",i,ma);
}
}
return 0;
}
問題27
#include<stdio.h>
int sosu(int n){
if(n<=1)return 0;
int i;
for(i=2;i*i<=n;i++){
if(n%i==0)return 0;
}
return 1;
}
int main(){
int i,length=0;
int a,b;
for(a=-999;a<1000;a++){
for(b=-999;b<1000;b++){
i=0;
while(sosu(i*i+a*i+b)==1){
i++;
}
if(i>length){
length=i;
printf("Ans=%d %d\n",a*b,i);
}
}
}
return 0;
}
問題28
#include<stdio.h>
int main(){
int i,sum=1;
for(i=3;i<=1001;i+=2){
sum+=(4*i*i-6*i+6);
}
printf("Ans=%d\n",sum);
return 0;
}
問題29
/*無理やり解いた もうちょっとスマートなプログラムに書き直す予定*/
#include<stdio.h>
int tmp[100];
void soinsu(int a){
int i;
for(i=0;i<100;i++)tmp[i]=0;
for(i=2;i*i<=a;i++){
if(a%i==0){
printf("%3d",i);
tmp[i]++;
a/=i;
i=1;
}
}
tmp[a]++;
printf("%3d\n",a);
}
int main(){
int *a=calloc(10000*100,sizeof(int));//[10000][100];
int i,j,k,l,n=0,flag,sum=0;
for(i=2;i<=100;i++){
soinsu(i);
for(j=2;j<=100;j++){
k=0;
for(k=0,flag=1;k<n;k++){
flag=0;
for(l=0;l<100;l++){
if(a[k*100+l]!=tmp[l]*j)flag=1;
}
if(flag==0)break;
}
if(k==n){
for(k=0;k<100;k++)a[n*100+k]=tmp[k]*j;
n++;
printf("%d^{%d}\n",i,j);
}
}
}
printf("Ans=%d\n",n);
return 0;
}
問題30
#include<stdio.h>
int main(){
int a[10]={0,1,32,243,1024,3125,7776,16807,32768,59049};
int i,j,k,sum=0;
for(i=2;i<1000000;i++){
k=0;
j=i;
while(j>=1){
k+=a[j%10];
j/=10;
}
//printf("%d %d\n",k,i);
if(k==i){
printf("%d\n",k);
sum+=k;
}
}
printf("Ans=%d\n",sum);
return 0;
}
問題31
#include<stdio.h>
int coin[8]={1,2,5,10,20,50,100,200};
int search(int now,int n){
int re=0,i;
if(now==200)return 1;
if(now>200)return 0;
for(i=n;i<8;i++){
re+=search(now+coin[i],i);
}
return re;
}
int main(){
printf("Ans=%d\n",search(0,0));
return 0;
}
問題32
#include<stdio.h>
int keta(int n){
int re=0;
for(re=1;(n/=10)>=1;re++);
return re;
}
int check(int l,int r){
int re=0,tmp,k;
int a[10];
for(k=0;k<10;k++)a[k]=0;
for(tmp=l*r,a[tmp%10]++;tmp>=1;re++,tmp/=10,a[tmp%10]++);
for(tmp=l,a[tmp%10]++;tmp>=1;re++,tmp/=10,a[tmp%10]++);
for(tmp=r,a[tmp%10]++;tmp>=1;re++,tmp/=10,a[tmp%10]++);
for(k=1;k<10;k++)if(a[k]!=1) return 0;
return 1;
}
int main(){
int i,j,k,l=0,Sum=0;
int add[100];
for(i=0;i<100;i++)add[i]=0;
for(i=1;i<100;i++){
for(j=i+1;keta(i)+keta(j)+keta(i*j)<=9;j++){
//printf("i=%d j=%d i*j=%d keta=%d\n",i,j,i*j,keta(i)+keta(j)+keta(i*j));
if(keta(i)+keta(j)+keta(i*j)==9 && check(i,j)){
for(k=0;k<l;k++)
if(add[k]==i*j)break;
if(k==l){
add[k]=i*j;
printf("%d * %d = %d\n",i,j,i*j);
Sum+=i*j;
l++;
}
}
}
}
printf("%d",Sum);
return 0;
}
問題33
#include<stdio.h>
int main(){
int i,j,k;
int si=1,sj=1;
for(i=11;i<100;i++){
for(j=i-1;j>9;j--){
if((j/10)*i==(i%10)*j && i/10==j%10){
printf("%d/%d\n",j,i);
si*=i%10;
sj*=j/10;
}
}
}
for(i=sj;i>0 && (si%i || sj%i);i--);
printf("Ans=%d\n",si/i);
return 0;
}
問題34
#include<stdio.h>
int kaizyo(int n){
if(n<=1)return 1;
return n*kaizyo(n-1);
}
int kaizyo2(int n){
int re=0;
do{
re+=kaizyo(n%10);
n/=10;
}while(n);
return re;
}
int main(){
int i,sum=0;
for(i=10;;i++){
if(i==kaizyo2(i)){
sum+=i;
printf("%d sum=%d\n",i,sum);
}
}
return 0;
}
問題35
#include<stdio.h>
int keta(int n){
int re=1;
while((n/=10)>=1)re++;
return re;
}
int sosu(int n){
int i;
for(i=2;i*i<=n;i++){
if(n%i==0)return 0;
}
return 1;
}
int reverse(int n){
int re=0;
do{
re=re*10+n%10;
}while((n/=10)>=1);
return re;
}
int check(int n){
int i,re=0,tmp,tmp2,tmp3;
tmp=n;
for(i=0;i<keta(n);i++){
tmp3=keta(tmp);
tmp2=tmp%10;
tmp=reverse(tmp/10);
tmp=reverse(tmp*10+tmp2);
if(tmp3!=keta(tmp))return 0;
if(sosu(tmp)==0)return 0;
}
return 1;
}
int main(){
int i,tmp,tmp2,tmp3,sum=1;
for(i=3;i<=1000000;i+=2){
if(check(i)==1){
printf("%d\n",i);
sum++;
}
}
printf("Ans=%d\n",sum);
return 0;
}
問題36
#include<stdio.h>
int reverse(int n){
int re=0;
while(n>=1){
re=re*10+n%10;
n/=10;
}
return re;
}
int check(int n){
int keta[32];
int i,j;
for(i=0;n!=0;i++){
keta[i]=n%2;
n/=2;
}
for(j=0;j<i;j++){
if(keta[j]!=keta[i-j-1])return 0;
}
return 1;
}
int main(){
int i,sum=0;
for(i=1;i<1000000;i++){
if(i==reverse(i) && check(i)==1){
sum+=i;
printf("%d sum=%d\n",i,sum);
}
}
return 0;
}
問題37
#include<stdio.h>
int sosu(int n){
int i;
if(n<=1)return 0;
for(i=2;i*i<=n;i++){
if(n%i==0)return 0;
}
return 1;
}
int reverse(int n){
int re=0;
while(n>=1){
re=re*10+n%10;
n/=10;
}
return re;
}
int check(int n){
int tmp=n;
while(tmp>=1){
if(sosu(tmp)==0)return 0;
tmp/=10;
}
tmp=n;
while(tmp>=1){
if(sosu(tmp)==0)return 0;
tmp=reverse(reverse(tmp)/10);
}
return 1;
}
int main(){
int i,sum=0;
for(i=11;;i+=2){
if(check(i)==1){
sum+=i;
printf("%d sum=%d\n",i,sum);
}
}
return 0;
}
問題38
#include<stdio.h>
int keta(int n){
int re=1;
while((n/=10)>=1)re++;
return re;
}
int check(int n,int j){
int tmp,k,a[10];
for(k=0;k<10;k++)a[k]=0;
for(k=1;k<j;k++){
tmp=n*k;
while(tmp){
a[tmp%10]++;
tmp/=10;
}
}
for(k=1;k<10;k++){
if(a[k]!=1)return 0;
}
return 1;
}
int main(){
int i,j,k,ke;
for(i=1;;i++){
ke=0;
for(j=1;ke<9;j++){
ke+=keta(i*j);
}
if(ke!=9)continue;
if(check(i,j)==1){
for(k=1;k<j;k++){
printf("%d",i*k);
}
printf("\n");
}
}
return 0;
}
問題39
#include<stdio.h>
int main(){
int i,j,p,ma=0;
int ans[1000];
for(i=0;i<1000;i++)ans[i]=0;
for(p=999;p>2;p--){
for(i=1;i<=333;i++){
for(j=i;j<=p-i-j;j++){
if(i*i+j*j==(p-i-j)*(p-i-j)){
printf("%d %d %d\n",i,j,p-i-j);
ans[p]++;
}
}
}
}
for(i=1;i<1000;i++){
if(ans[i]>ma){
ma=ans[i];
printf("%d Ans=%d\n",ma,i);
}
}
return 0;
}
問題40
#include<stdio.h>
int keta(int n){
int re=1;
while((n/=10)>=1)re++;
return re;
}
int reverse(int n){
int re=0;
while(n>=1){
re=re*10+n%10;
n/=10;
}
return re;
}
int main(){
int i,j=1,now,tmp,check=1,ke=0,Ans=1;
for(i=1;;i++){
ke=keta(i);
tmp=reverse(i);
while(ke-->0){
now=tmp%10;
tmp/=10;
if(j==check){
check*=10;
Ans*=now;
printf("Ans=%d now=%d\n",Ans,now);
if(check>1000000)return 0;
}
j++;
}
}
return 0;
}