#include<stdio.h>
#include<stdlib.h>
#define NUM 1001
int compare(int m[],int max[],int digit,int now)
{
int i=now;
if(digit>now)
{
return 1;
}
else if(digit==now)
{
for(;i>=0;i--)
{
if(m[i]>max[i])
{
return 1;
}
}
return 0;
}
else
return 0;
}
int main(void)
{
FILE *fp;
char num[NUM];
int n[NUM],t[13],m[20],max[20]={0};
int i,j,temp,k=0,start,carry,digit=1,now=7;
if(!(fp=fopen("1.txt","r")))
{
printf("读写错误!");
exit(1);
}
fgets(num,NUM,fp);
for(i=0;i<NUM-1;i++)
{
n[i]=num[i]-'0';
printf("%d",n[i]);
}
printf("\n");
for(i=0;i<NUM-13;i++)
{
m[0]=1;
digit=1;
for(k=1;k<20;k++)
{
m[k]=0;
}
for(j=i;j<i+13;j++)
{
for(k=1,carry=0;k<=digit;k++)
{
temp=m[k-1]*n[j]+carry;
m[k-1]=temp%10;
carry=temp/10;
}
while(carry)
{
m[++digit-1]=carry%10;
carry=carry/10;
}
}
if(compare(m,max,digit,now))
{
now=digit;
for(k=0;k<20;k++)
{
max[k]=m[k];
}
k=0;
start=i;
for(j=i;j<i+13;j++)
{
t[k]=n[j];
k++;
}
}
}
printf("\n从第%d开始\n",start);
for(k=now-1;k>=0;k--)
{
printf("%d",max[k]);
}
printf("\n");
for(k=0;k<13;k++)
{
printf("%d ",t[k]);
}
printf("\n");
fclose(fp);
system("pause");
return 0;
}
|