题目大意:
编写一个程序来计算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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。