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;
    }
  • 相关阅读:
    OSCP Learning Notes Buffer Overflows(3)
    OSCP Learning Notes Buffer Overflows(5)
    OSCP Learning Notes Exploit(3)
    OSCP Learning Notes Exploit(4)
    OSCP Learning Notes Exploit(1)
    OSCP Learning Notes Netcat
    OSCP Learning Notes Buffer Overflows(4)
    OSCP Learning Notes Buffer Overflows(1)
    OSCP Learning Notes Exploit(2)
    C++格式化输出 Learner
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740657.html
Copyright © 2011-2022 走看看