我需要得到一个99位的整数。这实际上是我需要得到一个99位的整数来解决的问题:https://quera.org/problemset/9774/
这是我的代码来解决这个问题,但它应该能够得到更大的数字:
#include <stdlib.h>
int main(){
long long int n;
scanf("%lld",&n);
long long int x=n;
int i=1;
while(x>=10){
x=x/10;
i++;
}
long long int ar[i];
x=i-1;
while(x>=0){
ar[x]=n%10;
n=n/10;
x--;
}
x=0;
int z=1;
while(x<=i-1){
printf("%d: ",ar[x]);
while(z<=ar[x]){
printf("%d",ar[x]);
z++;
}
z=1;
x++;
printf("\n");
}
return 0;
}
2条答案
按热度按时间lyfkaqu11#
没有一个可以保存99位整数的inter类型,因此你不能
scanf
它。gcc
(但它不是标准的C语言)可以处理的最大整数是128位长。但你可以存储的最大数字是170141183460469231731687303715884105727
,这太短了。所以答案是:不能使用
scanf
扫描99位长整数唯一的方法是作为字符串读取,然后使用像GMP这样的库
bvhaajcl2#
感谢每一个人的帮助.它解决了:)我用字符串和strlen函数而不是整数.这个新的代码: