长度高达二十几位的整数应该用什么输出啊
我用unsigned long long都溢出了
仅供参考:
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char a1[MAXLEN];
char a2[MAXLEN];
char a3[MAXLEN];
static int v1[MAXLEN];
static int v2[MAXLEN];
static int v3[MAXLEN];
int i,L,z,n;
void main(void) {
strcpy(a1,"1");
printf(" 1 1\n");
strcpy(a2,"1");
printf(" 2 1\n");
n=3;
while (1) {
L=strlen(a1);
for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';
L=strlen(a2);
for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';
for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];
for (i=0;i<MAXLEN;i++) {
if (v3[i]>=10) {
v3[i+1]+=v3[i]/10;
v3[i]=v3[i]%10;
}
}
z=0;
for (i=MAXLEN-1;i>=0;i--) {
if (z==0) {
if (v3[i]!=0) {
sprintf(a3,"%d",v3[i]);
z=1;
}
} else {
sprintf(a3,"%s%d",a3,v3[i]);
}
}
if (z==0) sprintf(a3,"0");
printf("%4d %s\n",n,a3);
n++;
if (strlen(a3)>=MAXLEN-2) break;
strcpy(a1,a2);
strcpy(a2,a3);
}
}
// 1 1
// 2 1
// 3 2
// 4 3
// 5 5
// 6 8
// 7 13
// 8 21
// 9 34
// 10 55
// 11 89
// 12 144
// 13 233
// 14 377
// 15 610
// 16 987
// 17 1597
// 18 2584
// 19 4181
// 20 6765
// 21 10946
// 22 17711
// 23 28657
// 24 46368
// 25 75025
// 26 121393
// 27 196418
// 28 317811
// 29 514229
// 30 832040
// 31 1346269
// 32 2178309
// 33 3524578
// 34 5702887
// 35 9227465
// 36 14930352
// 37 24157817
// 38 39088169
// 39 63245986
// 40 102334155
// 41 165580141
// 42 267914296
// 43 433494437
// 44 701408733
// 45 1134903170
// 46 1836311903
// 47 2971215073
// 48 4807526976
// 49 7778742049
// 50 12586269025
// 51 20365011074
// 52 32951280099
// 53 53316291173
// 54 86267571272
// 55 139583862445
// 56 225851433717
// 57 365435296162
// 58 591286729879
// 59 956722026041
// 60 1548008755920
// 61 2504730781961
// 62 4052739537881
// 63 6557470319842
// 64 10610209857723
// 65 17167680177565
// 66 27777890035288
// 67 44945570212853
// 68 72723460248141
// 69 117669030460994
// 70 190392490709135
// 71 308061521170129
// 72 498454011879264
// 73 806515533049393
// 74 1304969544928657
// 75 2111485077978050
// 76 3416454622906707
// 77 5527939700884757
// 78 8944394323791464
// 79 14472334024676221
// 80 23416728348467685
// 81 37889062373143906
// 82 61305790721611591
// 83 99194853094755497
// 84 160500643816367088
// 85 259695496911122585
// 86 420196140727489673
// 87 679891637638612258
// 88 1100087778366101931
// 89 1779979416004714189
// 90 2880067194370816120
// 91 4660046610375530309
// 92 7540113804746346429
// 93 12200160415121876738
// 94 19740274219868223167
// 95 31940434634990099905
// 96 51680708854858323072
// 97 83621143489848422977
// 98 135301852344706746049
// 99 218922995834555169026
// 100 354224848179261915075
// ……
// 4773 14077382496359025936665636485625926520592474586925166012454681337613823201915513693421478576950347808312950010664324446880235438195546062036639624029902110209914489021680880766982046743026463680887638759505853960120373855549212289961027163585090384204144058765506194815616721251568585084303154032340788528388956239208211693074755096458675078061838764386791726312013472397142111342146608271229587842743502014643463362055410622553110897299701727911977376761250911473543429624111346552248279717894719407147793360880496189974199765443555308786962462596164261401383902888416058015927885649072543016733098160215132832355453831706706834087903913117646445701762099163857087155765952671740843657617082895384529045949770079951985897256565798852964643643781228671674222671513801747242597151813607114869507081715170026559467076997735771674485913747676415130199810262603369400166374480388648540380525843400217914920385688078413839925559686224341999878722820472608553058218978479456944866093003507414189547089218
20几位longlong正常应该是足够的,你打印的时候是用的%ld吗,还是用了%d
https://blog.csdn.net/u013553804/article/details/51175388
https://blog.csdn.net/luxuejuncarl/article/details/1568369