PAT 乙级 1037 在霍格沃茨找零钱(20)C++版
1037. 在霍格沃茨找零钱(20)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱P和他实付的钱A,你的任务是写一个程序来计算他应该被找的零钱。
输入格式:
输入在1行中分别给出P和A,格式为“Galleon.Sickle.Knut”,其间用1个空格分隔。这里Galleon是[0, 107]区间内的整数,Sickle是[0, 17)区间内的整数,Knut是[0, 29)区间内的整数。
输出格式:
在一行中用与输入同样的格式输出哈利应该被找的零钱。如果他没带够钱,那么输出的应该是负数。
输入样例1:
10.16.27 14.1.28
输出样例1:
3.2.1
输入样例2:
14.1.28 10.16.27
输出样例2:
-3.2.1 难点:如何将三个整数用A.B.C形式输入读取成功
思路2难点:输出处,必须满足固定的输出方式 思路1:先将P和A的2钱数全部转换为最小计量数,然后再作差,再转换为三级单位表示的形式
思路2:自接加减补进 思路1代码:
// 1037.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include<iostream> using namespace std; class money
{
public:
int Galleon;
int Sickle;
int Knut; int get_knut();
money get_money(int knut);
void show_money(money m,bool b);
}; int main()
{
money P, A,temp; cin >> P.Galleon;
getchar();//读取 . 下同
cin >> P.Sickle;
getchar();
cin>> P.Knut; cin >> A.Galleon;
getchar();
cin >> A.Sickle;
getchar();
cin >> A.Knut; //多个函数综合到一起
temp.show_money(temp.get_money(A.get_knut() - P.get_knut()), (A.get_knut() - P.get_knut()) >= ?:);
} //计算总knut
int money::get_knut()
{
return * * this->Galleon + * this->Sickle + this->Knut;
} //将返回一个类的对象,存储差价
money money::get_money(int knut)
{
this->Galleon = knut / / ;
knut -= Galleon * * ;
this->Sickle = knut/;
knut -= Sickle * ;
this->Knut = knut; return *this;
} //按类形式输出结果
void money::show_money(money m,bool b)
{
if (b)
cout << m.Galleon << "." << m.Sickle << "." << m.Knut << endl;
else
cout << m.Galleon << "." << -m.Sickle << "." << -m.Knut << endl;
}
当然第三十八行可读性非常差,不过也只是将几个函数综合到一起,看起来比较复杂,其实内容很简单
思路2代码:
// 1037_1.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include<iostream> using namespace std; class money
{
public:
int Galleon;
int Sickle;
int Knut;
}; int main()
{
money P, A, temp; cin >> P.Galleon;
getchar();//读取 . 下同
cin >> P.Sickle;
getchar();
cin >> P.Knut; cin >> A.Galleon;
getchar();
cin >> A.Sickle;
getchar();
cin >> A.Knut; if (A.Knut < P.Knut)
{
temp.Knut = + A.Knut - P.Knut;
A.Sickle--;
}
else
temp.Knut = A.Knut - P.Knut; if (A.Sickle < P.Sickle)
{
temp.Sickle =+ A.Sickle - P.Sickle;
A.Galleon--;
}
else
temp.Sickle = A.Sickle - P.Sickle; temp.Galleon = A.Galleon - P.Galleon; if (temp.Galleon < )
{
if (temp.Knut > )
{
temp.Knut -= ;
temp.Sickle++;
} if (temp.Sickle > )
{
temp.Sickle -= ;
temp.Galleon++;
} cout << temp.Galleon << "." << -temp.Sickle << "." << -temp.Knut << endl;
}
else
cout << temp.Galleon << "." << temp.Sickle << "." << temp.Knut << endl; return ;
}
PAT 乙级 1037 在霍格沃茨找零钱(20)C++版的更多相关文章
- PAT乙级-1037. 在霍格沃茨找零钱(20)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.& ...
- PAT Basic 1037 在霍格沃茨找零钱 (20 分)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...
- PAT(B) 1037 在霍格沃茨找零钱(Java)
题目链接:1037 在霍格沃茨找零钱 (20 point(s)) 题目描述 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle) ...
- PAT (Basic Level) Practice (中文)1037 在霍格沃茨找零钱 (20 分)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...
- 1037 在霍格沃茨找零钱 (20 分)C语言
题目描述 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二 十九个纳特(Knut)兑一个西可 ...
- pat(B) 1037. 在霍格沃茨找零钱(水题)
代码: #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> ...
- PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20)
PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20) http://www.patest.cn/contests/pat-b-practise/1037 ...
- PAT 1037 在霍格沃茨找零钱(20)(代码+思路)
1037 在霍格沃茨找零钱(20)(20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon) ...
- PAT-乙级-1037. 在霍格沃茨找零钱(20)
1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...
随机推荐
- bzoj1088 [SCOI2005]扫雷
题解: 首先枚举第一个有木有雷 然后第二个可以通过第一个推,第三个也是 以此类推 最后判断是否合法 代码: #include<bits/stdc++.h> using namespace ...
- sql server 的变量
对于占用关键字等不符合规则的命名,可使用中括号[ ]括起来. 局部变量: 局部变量名必须以@开头,作用范围仅为程序内部. 常用用途: 1.作为计数器计算循环执行的次数或控制循环执行的次数 2.保存数据 ...
- (C/C++学习笔记) 十二. 指针
十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...
- mysql数据库索引相关
一 介绍 什么是索引? 索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要.索引优化应该是 ...
- NBUT 1219 Time 2010辽宁省赛
Time limit 1000 ms Memory limit 131072 kB Digital clock use 4 digits to express time, each digit ...
- LUN挂载到Linux主机后,如何对磁盘进行分区
将阵列上的LUN挂载到Linux主机后,如何对磁盘进行分区,方法参考https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-104-1/ fdis ...
- CentOS7安装OpenStack(Rocky版)-05.安装一个nova计算节点实例
上一篇文章分享了控制节点的nova计算服务的安装方法,在实际生产环境中,计算节点通常会安装一些单独的节点提供服务,本文分享单独的nova计算节点的安装方法 ---------------- 完美的分 ...
- CF1096.F. Inversion Expectation(树状数组)
A permutation of size n is an array of size n such that each integer from 1 to n occurs exactly once ...
- Stones 优先队列
Because of the wrong status of the bicycle, Sempr begin to walk east to west every morning and walk ...
- 《DSP using MATLAB》Problem 4.23
代码: %% ------------------------------------------------------------------------ %% Output Info about ...