题解 | kiki算数

kiki算数

https://www.nowcoder.com/practice/bcaf710fb58a44e1b678a890e6e90d7c

#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);

    int result;
    if(a < 100 && b < 100)
    {
        if(a+b<100)
        {
            result = a+b;
        }
        else 
        {
            result = (a+b)%100;
        }
    }
    else if(a < 100 && b >= 100)
    {
        b = b%100;
        if(a+b<100)
        {
            result = a+b;
        }
        else 
        {
            result = (a+b)%100;
        }
        
    }
    else if(a >= 100 && b < 100)
    {
        a = a%100;
        if(a+b<100)
        {
            result = a+b;
        }
        else 
        {
            result = (a+b)%100;
        }
    }
    else 
    {
        a = a%100;
        b = b%100;
        if(a+b<100)
        {
            result = a+b;
        }
        else 
        {
            result = (a+b)%100;
        }

    }

        printf("%d",result);

    return 0;
}

我是初学者 最开始只想到一个一个列举 虽然最终结果是对的但是耗时很久 就一直在想肯定会有更简单的算法 简化算法如下:

#include <stdio.h> int main() { long long a, b; // 用long long防止溢出(因为a和b最大是2^31-1,相加可能超过int范围) scanf("%lld %lld", &a, &b); // 步骤1:对a和b分别取余100,只保留最后两位 a = a % 100; b = b % 100; // 步骤2:计算和,并对100取余(保留最后两位) int result = (a + b) % 100; printf("%d", result); return 0; }

可以看出,使用该代码使得算法极大地得到了优化

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务