题目粗心:
编写一个程序来计算 A +B, 其中 A 和 B 是依照“Galleon Sickle.Knut” 的规范格局给出
算法思路:
应用构造体保留一个货币信息,用 A,B,result 别离代表输出的货币和 A + B 的值,在 A + B 的加法过程中,应用 carry 代表从低到高产生的进位, 首先计算 Knut 的值,其后果为 (A.Knut+B.Knut)%29,而其进位为 (A.Knut+B.Knut)/29,而后计算 Sickle 的值,其后果为 (A.Sickle+B.Sickle+carry)%17,其进位为 (A.Sickle+B.Sickle+carry)/17, 最初计算 Galleon 的值,其后果为 A.Galleon+B.Galleon+carry,没有进位,最初将后果依照指定格局输入即可.
提交后果:
AC 代码:
#include<cstdio>
using namespace std;
struct Currency{
int Galleon;
int Sickle;// 逢 17 进 1
int Knut;// 逢 29 进 1
};
int main(){
Currency A,B,result;
scanf("%d.%d.%d %d.%d.%d",&A.Galleon,&A.Sickle,&A.Knut,&B.Galleon,&B.Sickle,&B.Knut);
int carry;// 进位
result.Knut = (A.Knut+B.Knut)%29;
carry = (A.Knut+B.Knut)/29;
result.Sickle = (A.Sickle+B.Sickle+carry)%17;
carry = (A.Sickle+B.Sickle+carry)/17;
result.Galleon = A.Galleon+B.Galleon+carry;
printf("%d.%d.%d",result.Galleon,result.Sickle,result.Knut);
return 0;
}