zoukankan      html  css  js  c++  java
  • SDUSTOJ

    Description
    给出两个正整数,计算两个数相加需要多少次进位。
    这里写图片描述

    Input
    数据有多组,每组包含两个整数,都在int范围内,输入以EOF结尾
    Output
    一个整数,表示两个数相加需要的进位次数
    Sample Input
    123 321
    555 555
    123456789 987654321
    Sample Output
    0
    3
    9
    HINT
    一定要用整数求余相加判断吗?想想有没有简洁的思路。试试用字符串吧,转换思路,分步处理

    思路

    水题,鉴于最近问的比较多,就统一整理一下这道题的大致思路

    本题关注点是单个数字的相加是否构成进位条件,结合HINT也可以知道用字符串处理比较方便,在这里注意char类型中的数字其实不是真正的数字,而是字符,转换成整型数字应-‘0’

    根据常识也应该知道(用竖式计算加法也是倒着往前加的),要注意倒序处理字符串,因为后面的进位可能会影响到前面数字的进位(这里用一个flag记录,在这个问题中,flag不可能再大于1),但是因为样例并不能测出来这个坑,所以很多人都踩到了

    AC代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define maxn 100
    char s1[maxn],s2[maxn];
    
    int main()
    {
        while( ~scanf("%s%s",s1,s2) )
        {
            int len1 = strlen(s1), len2 = strlen(s2);
            int sum = 0, flag = 0;
            for( int i = len1 - 1, j = len2 - 1; ; i--,j--)
            {
                int temp = 0;
                if(i >= 0)
                    temp += s1[i] - '0';
                if(j >= 0)
                    temp += s2[j] - '0';
                if(temp + flag >= 10)
                {
                    flag = 1;
                    sum++;
                }
                else
                    flag = 0;
                if( i < 0 && j < 0 )
                    break;
            }
            printf("%d
    ",sum);
        }
        return 0;
    }
  • 相关阅读:
    微信分享接口
    MySQL的语句执行顺序
    C++类内存分布
    static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
    c++内存中字节对齐问题详解
    msyql中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍
    使用valgrind检查内存
    GDB调试教程
    Linux一些经典书籍
    C++编程语言学习资料
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740657.html
Copyright © 2011-2022 走看看