算法学习016 高精度加法运算 c++算法学习 中小学算法思维学习 比赛算法题解 ...

打印 上一主题 下一主题

主题 1053|帖子 1053|积分 3163

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目次
C++高精度加法运算
一、标题要求
1、编程实现
2、输入输出
二、算法分析
三、步伐编写
四、运行结果
五、考点分析
六、推荐资料


C++高精度加法运算

一、标题要求

1、编程实现

用高精度算法实现两个数:m和n,m和n的位数在1到100之间
2、输入输出

输入描述:第一行m,第二行输入n,且m和n的位数在1到100之间
输出描述:只有一行,m和n相加的和
输入样例:
  1. 1234567887654321
  2. 8765432187687654
复制代码
输出样例:
  1. 10000000075341975
复制代码
二、算法分析


  • 高精度加法算法的根本思想是将大整数按位进行盘算,从低位到高位逐个相加,同时需要思量进位的情况。
  • 由于位数已经超出通例数据类型,所以需要将相加的数据以字符串的情势读入
  • 将字符串翻转存入整型数组中,两数之和的位数最大为较大数的位数加 1
  • 从低位到高位依次两两相加后,再加上上一位的进位,将和模 10 作为本位结果,将和除以 10作为下一位的进位
  • 重复步骤 4,直到所有位数处置惩罚完,
  • 从后往前找结果数组中第一个非0元素的位置(即去前导 0操作),从该位置开始逆序输出数组中的元素,即为最终的加法结果。
三、步伐编写

  1. #include<bits/stdc++.h>
  2. #include<string>
  3. using namespace std;
  4. int A[102],B[102],C[102];
  5. //将字符串转换为对应的整形数组
  6. int getInt(int t[],string s)
  7. {
  8.         int len = s.length();
  9.         for(int i=0;i<len;i++)
  10.         {
  11.                 t[i] = s[len-i-1]-'0';
  12.         }
  13.         return len;
  14. }
  15. int main()
  16. {
  17.         string s1,s2;
  18.         cin >> s1 >> s2;
  19.         int lena = getInt(A,s1);
  20.         int lenb = getInt(B,s2);
  21.         int lenc = max(lena,lenb);
  22.         int k = 0;
  23.         //进行逐位相加,k作为进位标识
  24.         for(int i=0;i<lenc;i++)
  25.         {
  26.                 C[i] = (A[i] + B[i] + k) % 10;
  27.                 k = (A[i] + B[i] + k) / 10;
  28.         }
  29.         C[lenc] = k;//最高位
  30.         //去前导0
  31.         while(C[lenc] == 0 && lenc > 0)
  32.         {
  33.                 lenc--;
  34.         }
  35.         for(int i=lenc;i>=0;i--)
  36.         {
  37.                 cout << C[i];
  38.         }
  39.         return 0;
  40. }
复制代码
 本文作者:小兔子编程 作者首页:小兔子编程-CSDN博客
四、运行结果

  1. 1234567887654321
  2. 876543218768765410000000075341975
复制代码
五、考点分析

难度级别:中等,这题相对而言在于怎样转变思路,详细主要观察如下:

  • 分析标题,找到解题思路
  • 充分掌握字符串的利用
  • 学会怎样转变思路,进行加法进位
  • 学会高精度加法运算的核心
  • 学会输入流对象cin的利用,从键盘读入相应的数据
  • 学会for循环的利用,在确定循环次数的时间推荐利用学会
  • 掌握输出流对象cout的利用,与流插入运算符 << 联合利用将对象输出到终端表现
  • 学会分析标题,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
  • 充分掌握变量定义和利用、分支语句、循环语句和高精度算法的应用
PS:方式方法有多种,小朋友们只要可以或许到达标题要求即可!

六、推荐资料



  • 所有考级比赛学习相关资料合集【推荐收藏】

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表