POJ 2981 大整数加法 解题报告
编号:2981
考查点:高精度计算,大数运算
思路:涉及大数计算的题一般都是把数字放数组里存取,难度主要在其进位判断上,所以加法算是大数的四则运算里最简单的一种。主要就是加完如果大于10就让其上一位加1,本位置减10即可.
提交情况:自己debug时出现了倒序循环变量—写成了++,字符到数字忘了-‘0’的错误,但是由于此题是大数运算的最基本的题,提交一次就AC了,oh yeah.
Source Code:
// POJ Grids 2981
#include < string >
#include < iostream >
using namespace std;
#define MAX 200
unsigned int num[MAX + 10 ];
unsigned int num1[MAX + 10 ];
int main()
{
string str1,str2;
cin >> str1 >> str2;
memset(num, 0 , sizeof (num));
memset(num1, 0 , sizeof (num1));
int len = str1.length(); int index = 0 ;
for ( int i = len - 1 ;i >= 0 ;i -- )
{
num[index ++ ] = str1[i] - ' 0 ' ;
}
len = str2.length();index = 0 ;
for ( int i = len - 1 ;i >= 0 ;i -- )
{
num1[index ++ ] = str2[i] - ' 0 ' ;
}
len = str1.length() > str2.length() ? str1.length() : str2.length();
for ( int i = 0 ;i < len;i ++ )
{
num[i] += num1[i];
if (num[i] >= 10 )
{
num[i] -= 10 ;
num[i + 1 ] ++ ;
}
}
bool flag = false ;
for ( int i = len;i >= 0 ;i -- )
{
if (flag || num[i])
{
flag = true ;
cout << num[i];
}
}
if ( ! flag)
{
cout << " 0 " ;
}
return 0 ;
}
总结:今天的任务是把大数运算弄明白,做完这章的大数的加、乘、除运算三道题,这是第一道题,越是简单越要细心.>
By Ns517
Time 09.01.27