POJ 1503 Integer Inquiry(高精度运算)

//简单高精度运算 #include<iostream> using namespace std; struct BigInt//结构体 { char data[110];//字符串数据 int num[110];//整型数据 int len;//位数长度 void print()//打印函数 { if(num[len] != 0) cout << num[len];//注意长度,得提前判断进位的情况 for(int i = len-1;i >= 0;--i) cout << num[i]; } }; void reverse(BigInt &a)//将数位反转 { a.len = strlen(a.data); for(int i = 0;i < a.len;++i) a.num[a.len-1-i] = a.data[i] - '0';//最简易做法 } void plus(BigInt &a,BigInt &b) { int length = max(a.len,b.len); for(int i = 0;i < length;++i) { a.num[i+1] += (a.num[i] + b.num[i])/10;//进位 a.num[i] = (a.num[i] + b.num[i])%10; } } int main() { BigInt a,b; memset(a.num,0,sizeof(a.num)); memset(b.num,0,sizeof(b.num)); cin >> a.data; reverse(a); while(cin >> b.data) { if(strlen(b.data) == 1 && b.data[0] == '0')break; reverse(b); plus(a,b); } a.print(); cout << endl; return 0; } 

你可能感兴趣的:(Integer)