|
发表于 2018-3-19 22:30:37
|
显示全部楼层
- #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;
- }
复制代码 |
|