题解 | 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; }
可以看出,使用该代码使得算法极大地得到了优化
