hdu 1715 大菲波数

本文介绍了一种利用字符串和整型数组进行大数运算的方法,通过将字符串转化为整型数组,实现了斐波那契数列的大数计算。文章详细展示了如何使用C语言进行字符串到数组的转换,以及如何进行加法运算并处理进位,最终将计算结果转化为字符串输出。

这题的思路主要是大数用用字符串输出,先把字符串转化为用整形数组表示,再转化为字符串。。

ContractedBlock.gifExpandedBlockStart.gifView Code
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 char f[1001][2000]={"1","1","1"};
5 char sh[2000];
6 void sum(char a[ ],char b[ ])
7 {
8 // printf("%s to %s",a,b);
9 int len1,len2,i,j,k=0,c[2000];
10 memset(c,0,sizeof(c));
11 //memset(sh,' ' ,sizeof(sh));
12 len1=strlen(a),len2=strlen(b);
13 //printf("%d %d",len1,len2);
14 for(i=len1-1;i>=0;i--)
15 c[len1-i-1]=a[i]-48;
16 // printf("\n%d",c[0]);
17
18 for(j=len2-1;j>=0;j--)
19 c[len2-j-1]+=b[j]-48;
20 // printf("\n%d",c[0]);
21 len1=len1>len2?len1:len2;
22 for(i=0;i<=len1;i++)
23 if(c[i]>9)
24 {
25 c[i+1]+=c[i]/10;
26 c[i]-=10;
27 }
28 j=len1+2;
29 while(!c[j])
30 j--;
31 // printf("***%d ",j);
32
33 //for(i=0;i<=j;i++)
34 // printf("Abc:%d ",c[i]);
35 for(i=j;i>=0;i--)
36 sh[k++]=c[i]+48;
37 sh[k]='\0';
38 // printf("%s\n",sh);
39 }
40 int main( )
41 {
42 int i,j,k,N;
43 for(i=3;i<=1000;i++)
44 {
45 sum(f[i-1],f[i-2]);
46 strcpy(f[i],sh);
47 }
48 scanf("%d",&N);
49 while(N--)
50 {
51 scanf("%d",&k);
52 printf("%s\n",f[k]);
53 }
54 return 0;
55 }
56
57

转载于:https://www.cnblogs.com/tangcong/archive/2011/04/26/2028836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值