B1037:在霍格沃兹找零钱(20')
思路:将P和A统一到Knut单位,即Galleon*17*29,Sickle*29。然后先比较输出带不带负号。然后,分别输出G值,S值,K值。
注意:G值=差值/(17*29),不是%。S值=(差值-G值*17*29)/29。K值=差值%29,也可以用差值-G值*17*29-S值*29。
代码:
#include<cstdio>
int main(){
int G1,S1,K1,G2,S2,K2;
scanf("%d.%d.%d %d.%d.%d",&G1,&S1,&K1,&G2,&S2,&K2);
int P = G1*17*29+S1*29+K1; //统一到K位
int A = G2*17*29+S2*29+K2;
if( P > A){
printf("-"); //判断是否输出负号
A = P-A;
}
else A = A-P;
int G3,S3,K3;
G3 = A/(17*29); //是除不是取余
S3 = (A-G3*17*29)/29; //这里也是除
//S3 = A%(17*29)/29;
//K3 = A-G3*17*29-S3*29;
K3 = A%29; //这里是取余
printf("%d.%d.%d",G3,S3,K3);
return 0;
}
版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~