B1037 在霍格沃茨找零钱
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱P和他实付的钱A,你的任务是写一个程序来计算他应该被找的零钱。
输入格式:
输入在1行中分别给出P和A,格式为“Galleon.Sickle.Knut”,其间用1个空格分隔。这里Galleon是[0, 10^7]区间内的整数,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
solution1(有一个测试点木有过,获取数据忒笨了,烂的没心情改了
#include <stdio.h>
#include <string.h>
int input(char s1[], char s2[], int n1, int n2){
while(s2[n2] != '.' && n2 < strlen(s2)){
s1[n1++] = s2[n2++];
}
return n2;
}
int main(){
char p[30], a[30], flag = 1, t[30], gg[2][8], ss[2][3], kk[2][3];
int g[3], s[3], k[3], n[2] = {0};
scanf("%s %s", p, a);
if(strcmp(a, p) < 0){
flag = -1;
strcpy(t, a);
strcpy(a, p);
strcpy(p, t);
}
n[0] = input(gg[0], p, 0, 0);
n[1] = input(gg[1], a, 0, 0);
n[0] = input(ss[0], p, 0, ++n[0]);
n[1] = input(ss[1], a, 0, ++n[1]);
input(kk[0], p, 0, ++n[0]);
input(kk[1], a, 0, ++n[1]);
for(int i = 0; i < 2; i++){
sscanf(gg[i], "%d", &g[i]);
sscanf(ss[i], "%d", &s[i]);
sscanf(kk[i], "%d", &k[i]);
}
if(k[1] < k[0]){
s[1]--;
k[2] = k[1] - k[0] + 29;
}
else
k[2] = k[1] - k[0];
if(s[1] < s[0]){
g[1]--;
s[2] = s[1] - s[0] + 17;
}
else
s[2] = s[1] - s[0];
if(flag < 0)
printf("-");
g[2] = g[1] - g[0];
printf("%d.%d.%d", g[2], s[2], k[2]);
return 0;
}
solution2
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int g[2], s[3], k[3];
scanf("%d.%d.%d %d.%d.%d", &g[0], &s[0], &k[0], &g[1], &s[1], &k[1]);
if(g[0] > g[1] || (g[0] == g[1] && s[0] > s[1]) || (g[0] == g[1] && s[0] == s[1] && k[0] > k[1])){
swap(g[0], g[1]);
swap(s[0], s[1]);
swap(k[0], k[1]);
printf("-");
}
if(k[1] < k[0]){
s[1]--;
k[2] = k[1] - k[0] + 29;
}
else
k[2] = k[1] - k[0];
if(s[1] < s[0]){
g[1]--;
s[2] = s[1] - s[0] + 17;
}
else
s[2] = s[1] - s[0];
printf("%d.%d.%d", g[1] - g[0], s[2], k[2]);
return 0;
}
solution3
#include <stdio.h>
#include <algorithm>
const int gallen = 17 * 29;
const int sickle = 29;
int main(){
int g[2], s[2], k[2], price[2];
scanf("%d.%d.%d %d.%d.%d", g, s, k, g + 1, s + 1, k + 1);
for(int i = 0; i < 2; i++)
price[i] = g[i] * gallen + s[i] * sickle + k[i];
price[1] -= price[0];
if(price[1] < 0){
price[1] *= -1;
printf("-");
}
printf("%d.%d.%d", price[1] / gallen, price[1] % gallen / sickle, price[1] % sickle);
return 0;
}
B1037 在霍格沃茨找零钱的更多相关文章
- 【算法笔记】B1037 在霍格沃茨找零钱
1037 在霍格沃茨找零钱 (20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特( ...
- 【PAT】B1037 在霍格沃茨找零钱(20 分)
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...
- PAT-乙级-1037. 在霍格沃茨找零钱(20)
1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...
- PAT 1037 在霍格沃茨找零钱(20)(代码+思路)
1037 在霍格沃茨找零钱(20)(20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon) ...
- PAT 乙级 1037 在霍格沃茨找零钱(20)C++版
1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...
- PAT——乙级1022:D进制的A+B &乙级1037:在霍格沃茨找零钱
1022 D进制的A+B (20 point(s)) 输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依 ...
- PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20)
PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20) http://www.patest.cn/contests/pat-b-practise/1037 ...
- PAT(B) 1037 在霍格沃茨找零钱(Java)
题目链接:1037 在霍格沃茨找零钱 (20 point(s)) 题目描述 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle) ...
- P1037 在霍格沃茨找零钱
转跳点:
- PAT 1037. 在霍格沃茨找零钱(20)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.& ...
随机推荐
- mybatis - [11] ResultMap结果集映射
题记部分 用于处理数据库中的字段名和Java实体类中的属性名不一致的问题 数据库中的字段为id,name,pwd.Java实体类属性为id,name,password. 在映射文件中select标签使 ...
- 启动hive,报错 Name node is in safe mode.
在学习过程中,过了几天再启动虚拟机,启动hadoop后再启动别的框架会报错: Exception in thread "main" java.lang.RuntimeExcepti ...
- Scala List集合 List 有序不唯一,元素可重复
package com.wyh.day01 import scala.collection.mutable.ListBuffer /** * List 有序不唯一,元素可重复 */ object Sc ...
- Java、Python等接入方式对接股票数据源API接口
为了创建一个Python项目来对接StockTV的API接口,我们可以使用requests库来发送HTTP请求,并使用websocket-client库来处理WebSocket连接.以下是一个简单的P ...
- 使用form-create时修改表单数据
FormCreate 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成组件.支持5个UI框架,并且支持生成任何 Vue 组件.内置20种常用表单组件和自定义组件,再复杂的 ...
- php服务器如何验证令牌
在PHP中,令牌通常用于防止跨站请求伪造(CSRF)攻击.以下是一个简单的例子,展示了如何生成和验证令牌: 生成令牌: function generateToken($length = 32) { / ...
- selenium 提示 Non-UTF-8 code starting with '\xc4'
解决(1):在程序最上方加上语句,# coding=gbk 解决(2):在preference下进行修改
- BUGKU_PWN_OVERFLOW2_WP
WP_OVERFLOW2 拿到程序,首先放到我们的kali里面看看是多少位的程序,然后在看看有没有什么安全属性 64位程序,并且开启了RELRO,NX 也就是说,这道题我们需要使用ROP绕过 使用id ...
- svn提示Node remains in conflict的解决办法
svn 更新提示Node remains in conflict 这个时候不管svn up多少次,都无法更新到最新的内容 解决办法: svn revert --depth=infinity * 其中* ...
- 鸿蒙NEXT开发案例:程序员计算器
[环境准备] • 操作系统:Windows 10 • 开发工具:DevEco Studio 5.0.1 Release Build Version: 5.0.5.306 • 目标设备:华为Mate60 ...