Advertisement

上海计算机学会2024年5月月赛C++丙组T1加法的进位

阅读量:

加法的进位

内存限制: 256 Mb时间限制: 1000 ms

题目描述

给定两个整数 a 与 b,请计算在十进制加法过程中,a+b 产生了多少次进位。

输入格式
  • 第一行:单个整数表示 a。
  • 第二行:单个整数表示 b。
输出格式
  • 单个整数:表示发生进位的次数。
数据范围
  • 1≤a,b≤1,000,000,000
样例数据

输入:
666
234
输出:
2
输入:
999
1
输出:
3

解析:模拟竖式加法,详见代码:

复制代码
 #include <bits/stdc++.h>

    
 using namespace std;
    
 int a,b;
    
 int ans=0;
    
 int main() {
    
     cin>>a>>b;
    
     int y=0;
    
     while(a>0||b>0){
    
     y+=a%10+b%10;
    
     if (y>=10){
    
         ans++;
    
     }
    
     y/=10;
    
     a/=10;
    
     b/=10;
    
     }
    
     cout<<ans;
    
     return 0;
    
 }
    
    
    
    
    AI写代码cpp
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-05-31/5l78jVpIvONDT2Bd1bKLqAJY4t6H.png)

用字符串的解法:

复制代码
 #include <bits/stdc++.h>

    
 using namespace std;
    
 string a,b;
    
 int ans=0;
    
 int main() {
    
     cin>>a>>b;
    
     int lena=a.length();
    
     int lenb=b.length();
    
     int y=0;
    
     for(int i=lena-1,j=lenb-1;i>=0||j>=0;i--,j--){
    
     if (i>=0){
    
         y+=a[i]-'0';
    
     }
    
     if (j>=0){
    
         y+=b[j]-'0';
    
     }
    
     if (y>=10){
    
         ans++;
    
     }
    
     y/=10;
    
     }
    
     cout<<ans;
    
     return 0;
    
 }
    
    
    
    
    AI写代码cpp
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-05-31/LkDfwGU7CNJOTng13c9lPIrA0SmV.png)

全部评论 (0)

还没有任何评论哟~