您的位置:首页 > 产品设计 > UI/UE

POJ 1503 Integer Inquiry(高精度运算)

2010-03-17 00:50 260 查看
//简单高精度运算
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: