PTA | 程序设计类实验辅助教学平台 (pintia.cn)
思路:
- 转换成最小单位进行计算,最后进行单位还原。
- 另外注意在换算成最小单位的过程中最大的极限值超出了整型范围。所以不能纯用int类型。
#include<iostream>
using namespace std;
#define int long long
signed main()
{
int g2,s2,k2,g1,s1,k1;
scanf("%lld.%lld.%lld",&g1,&s1,&k1);
scanf("%lld.%lld.%lld",&g2,&s2,&k2);
//全部转化为同一单位。
k1=g1*17*29+s1*29+k1;
k2=g2*17*29+s2*29+k2;
int sub;
sub=k2-k1;
if(sub<0)//说明是负数
{
sub=-sub;printf("-");
}
//再把sub转换为 Galleon.Sickle.Knut的格式
int g,s,k;
g=sub/(17*29); //或 / (29*17)
s=sub%(29*17)/29;
k=sub%(29*17)%29;
printf("%lld.%lld.%lld",g,s,k);
return 0;
}