题目链接在此。
思路
从题干可得 1 Gallon = 17 Sickle = 17*29(=493) Knut。我们先把输入输出都转换成Knut,然后用res = A-P得到结果,这是一个以Knut为单位的结果,只需要将res转换成G.S.K的形式即可:Gallon = res/493, Sickle = (res%493)/29, Knut = res%29。
AC代码
#include<stdio.h>
int main(){
int pg,ps,pk, ag,as,ak;
int g,s,k;
scanf("%d.%d.%d %d.%d.%d",&pg,&ps,&pk,&ag,&as,&ak);
int P,A;
//将P,A都转成Knut
P = pg*493 + ps*29 + pk;
A = ag*493 + as*29 + ak;
int res = A-P;
if(res < 0){
printf("-");
res = -res;
}
g = res/493;
res %= 493;
s = res/29;
k = res%29;
printf("%d.%d.%d\n",g,s,k);
return 0;
}
注意:
若res为负数,需要转换成正数,符号不带入后面的运算,只需要再输出的时候注意即可。