424 - Integer Inquiry

     对于大整型数据的四则计算,一种办法是运用数组将该大整数的各个位数上的数字保存起来,然后再根据四则运算的诸位运算规则将各位数上的数字逐一计算,注意进位时的操作技巧!

一道Uva online的题目, 还算顺利,第一次提交就AC了,现将代码copy如下,还望各位高手指点一二。。。。。。

题目出处:uva.onlinejudge.org/index.php 

# include < iostream >  
#include < cstring > 
#include < cmath >
using namespace std;
const int MAX = 210;
int LongIntNum[MAX][MAX];
int Result[MAX];  //保存计算结果
char LongIntStr[MAX][MAX];
void Add(int LongIntNum[MAX][MAX], int n, int Result[])  //计算两个大整型数据的和
{
     int i;
     int carry = 0;
     for  (i = 0; i < MAX; i++) {
         int add = LongIntNum[n][i] + Result[i] + carry;
         Result[i] = add % 10;
         carry = add / 10;
     }
}
int main() {
     int m = 0, n = 0, i, j, len;
     memset(Result, 0, MAX);  //将记录结果的数组清零
     for  (i = 0; i < MAX; i++)  //将数组清零
         memset(LongIntNum[i], 0, sizeof(LongIntNum[i]));
     while  (cin.getline(LongIntStr[n], MAX)) {
         len = strlen(LongIntStr[n]);
         if  (len == 1 && LongIntStr[n][0] ==  '0' //输入为0时退出
             break ;
         for  (i = 0; i < len; i++)
             LongIntNum[n][i] = LongIntStr[n][len - i - 1] -  '0' //将该大整型数据逆序存储以便进位时的计算
         n++;
     }
     for  (i = 0; i < n; i++)
         Add(LongIntNum, i, Result);  //计算所有大整型数据的和
     for  (i = MAX - 1; i >= 0; i--)  //忽略前导0
         if  (Result[i])
             break ;
     for  (j = i; j >= 0; j--)
         cout << Result[j];
     cout << endl;
     return  0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值