【PHP】字符串加法运算(大数加法)

末蓝、 2022-06-08 01:28 511阅读 0赞

请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error

输入描述:
输入为一行,包含两个字符串,字符串的长度在[1,100]。
输出描述:
输出为一行。合法情况输出相加结果,非法情况输出error
示例1
输入

123 123
abd 123
输出

246
Error

  1. <?php
  2. //字符串加法运算
  3. $str = explode(" ",trim(fgets(STDIN)));
  4. $s1 = strrev($str[0]);//翻转一下字符串,从前往后加
  5. $s2 = strrev($str[1]);//同上
  6. if(!is_numeric($s1) || !is_numeric($s2)){
  7. echo "error";
  8. exit();
  9. }
  10. $n = min(strlen($s1), strlen($s2));//求出公共长度
  11. $num='';
  12. $jinwei = 0;//生成一个进位标识,默认为0
  13. for($i=0; $i<$n; $i++){
  14. $sum = $s1[$i]+$s2[$i]+$jinwei;//加的时候,加上进位
  15. $jinwei = 0;
  16. if($sum>=10){
  17. //是否大于10,如果是,则求出进位,算出实际值
  18. $jinwei = intval($sum/10);
  19. $sum = $sum%10;
  20. }
  21. $num.=$sum;
  22. }
  23. for($k=$n; $k<strlen($s1); $k++){
  24. //求剩余长度的运算,就是剩下的数,加进位
  25. $sum = $s1[$k]+$jinwei;
  26. $jinwei = 0;
  27. if($sum>=10){
  28. $jinwei = intval($sum/10);
  29. $sum = $sum%10;
  30. }
  31. $num.=$sum;
  32. }
  33. for($k=$n; $k<strlen($s2); $k++){
  34. //求剩余长度的运算,就是剩下的数,加进位
  35. $sum = $s2[$k]+$jinwei;
  36. $jinwei = 0;
  37. if($sum>=10){
  38. $jinwei = intval($sum/10);
  39. $sum = $sum%10;
  40. }
  41. $num.=$sum;
  42. }
  43. if($jinwei!=0){
  44. //最后如果还有进位的话,直接加到最后
  45. $num.=$jinwei;
  46. }
  47. echo strrev($num);//再翻转回来

发表评论

表情:
评论列表 (有 0 条评论,511人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python大数加法

    以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 (字符串长度不大于100000,保证字符串仅由’0’~'9’这10种字符组成)

    相关 大数加法

    问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题

    相关 大数加法

    对于一些比long int还大的数,我们应该如何计算加法呢? 可以想到的是可以转换为字符串去计算。 思路: 1,逆序输入 2,加法 1)主要就是考虑进位。 比如我们