题目链接:
https://pintia.cn/problem-sets/994805342720868352/problems/994805416519647232
题目大意:
考察进制转换给定一种货币系统,给出两个货币数量,求两者之和,并按货币系统的格式输出。这类题有这种思路,一是,直接暴力的将两个货币转化成以最小单位计数的数值,需要注意的是,应该用long long型存储,若用int则会溢出。
二是,引入进位变量carry,各位数可以用int直接存储。
本题较为简单,直接给出代码。
思路一:
#include <cstdio>
typedef long long ll;
ll solve(ll s, ll m, ll t){
return (s*17 + m)*29 + t;
}
int main()
{
long long ss, mm, tt, sum = 0;
for(int i = 0; i < 2; i++){
scanf("%ld.%ld.%ld",&ss,&mm,&tt);
sum += solve(ss, mm, tt);
}
printf("%d.%d.%d",sum/(17*29),(sum%(17*29))/29,(sum%(17*29))%29);
return 0;
}
思路二:
#include <cstdio>
int a[3], b[3], c[3], carry;
int main(){
scanf("%d.%d.%d", &a[0], &a[1], &a[2]);
scanf("%d.%d.%d", &b[0], &b[1], &b[2]);
c[2] = (a[2] + b[2])%29;
carry = (a[2] + b[2])/29;
c[1] = (a[1] + b[1] + carry)%17;
carry = (a[1] + b[1] + carry)/17;
c[0] = a[0] + b[0] + carry;
printf("%d.%d.%d", c[0], c[1], c[2]);
return 0;
}