1058. A+B in Hogwarts (20)

来源:互联网 发布:js插件如何编写 编辑:程序博客网 时间:2024/05/18 00:54

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

题目很简单,但是我一开始以为输入点时,会自动转化为阿斯特码,所以必须分割,做的比较麻烦。这是原来的代码。

#include <iostream>#include <string>using namespace std;struct node{    int G,S,K;    node(){};    node(string str)    {        G=0;        S=0;        K=0;        int i=0,k=0;        while(i<3&&k<str.size())        {            if(str[k]=='.')            {                k++;                i++;                continue;            }            if(i==0)            {                G=G*10+(str[k++]-'0');                continue;            }            if(i==1)            {                S=S*10+(str[k++]-'0');                continue;            }            if(i==2)            {                K=K*10+(str[k++]-'0');                continue;            }        }    }    void add(node b)    {        K+=b.K;        S+=K/29;        K=K%29;        S+=b.S;        G+=S/17;        S=S%17;        G+=b.G;    }};int main(){    //freopen("in.txt","r",stdin);     string a,b;    cin>>a>>b;    node A(a);    node B(b);    A.add(B);    printf("%d.%d.%d\n",A.G,A.S,A.K);    system("pause");    return 0;}

后方发现可以把 ‘.’输入到一个char型后,代码就一下子简单了。

#include<iostream>  using namespace std;  int main()  {      int G,G1,S,S1,K,K1;      char t;      cin>>G>>t>>S>>t>>K;      cin>>G1>>t>>S1>>t>>K1;      K += K1;      S += K/29;      K %= 29;      S += S1;      G += S/17;      S %= 17;      G += G1;      cout<<G<<"."<<S<<"."<<K<<endl;      return 0;  }  
0 0