1058. A+B in Hogwarts (20)
时间限制
50 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
If you are a fan of Harry Potter, you would know the world of magic has its own currency system -- as Hagrid explained it to Harry, "Seventeen silver Sickles to a Galleon and twenty-nine Knuts to a Sickle, it's easy enough." Your job is to write a program to compute A+B where A and B are given in the standard form of "Galleon.Sickle.Knut" (Galleon is an integer in [0, 107], Sickle is an integer in [0, 17), and Knut is an integer in [0, 29)).
Input Specification:
Each input file contains one test case which occupies a line with A and B in the standard form, separated by one space.
Output Specification:
For each test case you should output the sum of A and B in one line, with the same format as the input.
Sample Input:
3.2.1 10.16.27
Sample Output:
14.1.28
当相加为零时要处理。简单的另一种方法见
评测结果
时间 | 结果 | 得分 | 题目 | 语言 | 用时(ms) | 内存(kB) | 用户 |
7月17日 20:05 | 答案正确 | 20 | 1058 | 1 | 308 |
测试点
测试点 | 结果 | 用时(ms) | 内存(kB) | 得分/满分 |
0 | 答案正确 | 1 | 180 | 10/10 |
1 | 答案正确 | 1 | 308 | 2/2 |
2 | 答案正确 | 1 | 308 | 2/2 |
3 | 答案正确 | 1 | 308 | 2/2 |
4 | 答案正确 | 1 | 256 | 2/2 |
5 | 答案正确 | 1 | 180 | 2/2 |
#include<iostream>
#include<string>
using namespace std;
long int Getnum(string s1,long int *l)
{
long int temp=0,e=1;
while((*l)>=0&&s1[*l]!='.')
{
temp=temp+(s1[*l]-'0')*e;
e*=10;
(*l)--;
}
(*l)--;
return temp;
}
string Getstr(long int nn)
{
string ss;
char cc;
if(nn!=0)
{
while(nn>0)
{
cc=nn%10+'0';
ss=cc+ss;
nn=nn/10;
}
}
else
{
cc='0';
ss=cc;
}
return ss;
}
int main()
{
string A,B,sa;
long int len1,len2,temp,c;
cin>>A>>B;
len1=A.length()-1;
len2=B.length()-1;
c=0;
temp=Getnum(A,&len1)+Getnum(B,&len2);
c=temp/29;
temp%=29;
sa="."+Getstr(temp);
temp=c+Getnum(A,&len1)+Getnum(B,&len2);
c=temp/17;
temp%=17;
sa="."+Getstr(temp)+sa;
temp=c+Getnum(A,&len1)+Getnum(B,&len2);
sa=Getstr(temp)+sa;
cout<<sa<<endl;
return 0;
}