POJ 2981 大整数加法 解题报告

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

posted @ 2009-01-27 15:43  端木  阅读(1413)  评论(0编辑  收藏  举报