高精度(c++)
当代大学生封校的无聊生活,我又写起了我的小博客。(林大的陈宇老师讲的真的很好,可惜当时没好好学,现在怀着愧意来整理一下)
大整数
在32位机器里,有符号整数(int)取值范围是-2147483648~+2147483648(10位)
无符号整数(unsigned int)取值范围是0~4294967295(10位)
超过这个范围的数,可以用浮点型(double)
超过浮点型的数据例如一个1000位整数,用常规方法无法处理,称为大数,用高精度。
高精度加法
NEFU 880
输入文件的第1行为一个整数N,表示输入文件中接下来有N组数据。每组数据最多包含100行。每一行由一个非常长的十进制整数组成,这个整数的长度不会超过100个字符而且只包含数字,每组数据的最后一行为0,表示这组数据结束。
每组数据之间有一个空行。
对输入文件中的每组数据,输出它们的和。每两组数据的输出之间有一个空行。
分析:整数位数不超过100位,因此只能用字符形式读入,处理时转换成整数形式。
所有整数对应位加起来可能超过10,因为最多100个整数,因此所有整数对应位加起来不超过900,即进位不超过90,即结果最大长度不超过102。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s[200];//以字符形式存读入的每个数
int a[200][200];//逆序后的大数
int an[200];//求得的和
int i,j,k;
int n;//读入整数个数
int len,maxlen;//整数最大长度
int sum,carry,digit;
int t;//组数
scanf("%d",&t);
while(t--)
{
maxlen=-1;
memset(a