zoukankan      html  css  js  c++  java
  • PAT-进制转换-A1058 A+B in Hogwarts (20分)

    题目描述:

      如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统一—就如海格告诉哈利的:“17个银西可(Sickle)兑一个加隆(Galleon),29个纳特(Knut)兑一个西可,很容易”。你的任务是编写一个程序来计算A+B,其中A和B是按照“Galleon.Sickle.Knut”的标准格式给出的。

    输入格式:

      输入两个数A和B,以该格式:Galleon.Sickle.Knut

    输出格式:

      输出A+B的结果,以该格式:Galleon.Sickle.Knut

    样例:

      输入:3.2.1 10.16.27

      输出:14.1.28

    思路:

      将两数全部转换为Knut,然后进行相加得到数res,然后依据题目要求进行输出。

    注意点:

      将数转换为Knut时,要防止溢出,故将res的类型设置为long。

    代码:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     //设置long防止res溢出
     7     long res, B_Galleon, B_Sickle, B_Knut, A_Galleon, A_Sickle, A_Knut;
     8 
     9     //读入数据
    10     scanf("%ld.%ld.%ld", &A_Galleon, &A_Sickle, &A_Knut);
    11     scanf("%ld.%ld.%ld", &B_Galleon, &B_Sickle, &B_Knut);
    12 
    13     //将钱全部转换位Knut,res为long类型防止溢出
    14     res = (A_Galleon + B_Galleon) * 17 * 29 + (A_Sickle + B_Sickle) * 29 + (A_Knut + B_Knut);
    15 
    16     //进行输出
    17     printf("%ld.%ld.%ld", (res / 29) / 17, (res / 29) % 17, res % 29);
    18 
    19     return 0;
    20 }
    View Code

    参考-《算法笔记》-胡凡

  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/fangzhiyou/p/12405535.html
Copyright © 2011-2022 走看看