ACM 495 Fibonacci Freeze
/**************************************************************/
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<math.h>
- int math[5001][1100];
- main()
- {
- int a,b,n;
- math[0][0]=0;math[1][0]=1;
- for(a=2;a<=5000;a++)
- {
- for(b=0;b<=1099;b++)
- {
- math[a][b]=math[a][b]+math[a-1][b]+math[a-2][b];
- if (math[a][b]>=10)
- {
- math[a][b+1]=math[a][b+1]+math[a][b]/10;
- math[a][b]=math[a][b]%10;
- }
- }
- }
- while(scanf("%d",&n)==1)
- {
- printf("The Fibonacci number for %d is ",n);
- if(n==0) printf("0\n");
- else
- for(a=1099;a>=0;a--)
- {
- if(math[n][a]!=0)
- {
- for(b=a;b>=0;b--)
- printf("%d",math[n][b]);
- break;
- }
- }
- printf("\n");
- }
- return 0;
- }
/************10億進位法[相加不超過21億]************************/
#include<stdio.h>
#include<stdlib.h>
int math[5001][120];
main()
{
int a,b,n;
math[0][0]=0;math[1][0]=1;
for(a=2;a<=5000;a++)
{
for(b=0;b<120;b++)
{
math[a][b]=math[a][b]+math[a-1][b]+math[a-2][b];
if (math[a][b]>=1000000000)
{
math[a][b+1]=math[a][b+1]+math[a][b]/1000000000;
math[a][b]=math[a][b]%1000000000;
}
}
}
while(scanf("%d",&n)==1)
{
printf("The Fibonacci number for %d is ",n);
if(n==0) printf("0");
else
for(a=119;a>=0;a--)
{
if(math[n][a]!=0)
{
printf("%d",math[n][a]);
for(b=a-1;b>=0;b--)
{
if(math[n][b]<1000000000&&math[n][b]>=100000000)
printf("%d",math[n][b]);
else if(math[n][b]<100000000&&math[n][b]>=10000000)
printf("0%d",math[n][b]);
else if(math[n][b]<10000000&&math[n][b]>=1000000)
printf("00%d",math[n][b]);
else if(math[n][b]<1000000&&math[n][b]>=100000)
printf("000%d",math[n][b]);
else if(math[n][b]<100000&&math[n][b]>=10000)
printf("0000%d",math[n][b]);
else if(math[n][b]<1000&&math[n][b]>=100)
printf("00000%d",math[n][b]);
else if(math[n][b]<100&&math[n][b]>=10)
printf("000000%d",math[n][b]);
else if(math[n][b]<10)
printf("0000000%d",math[n][b]);
}
break;
}
}
printf("\n");
}
return 0;
}
感謝你!!!
^ ^
感謝你題供程式碼
我會用大數運算
可是是用cin>>A>>B
我不會用這一種
你可以教我ㄇ
可以用c++嗎??
Thank you
好險我是用C++
(慶幸中)