思路:将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;
}

版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~