1037 在霍格沃茨找零钱

2024-03-09 22:52
文章标签 零钱 1037 沃茨 霍格

本文主要是介绍1037 在霍格沃茨找零钱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(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

/*
本题主要是不同进制之间的减法;可以考虑将数据化成最小的权
的形式,就是将加隆银西全部转换为纳特,再进行加减;然后再
转化成加隆.银西.纳特的形式;注意每位空着的要用0补齐;
就是0也应该以0.0.0的格式输出;
*/
#include<iostream>
#include<string>
using namespace std;
struct Money{int Galleon;int Sickle;int Knut;int total;
};
typedef struct Money money;
typedef struct Money price;
//钱币输入函数;
struct Money input(){struct Money ret;int G;    //Galleon;int S;    //Sickle;int K;    //Knut;cin>>G;getchar();cin>>S;getchar();cin>>K;ret.Galleon=G;ret.Sickle=S;ret.Knut=K;ret.total=G*17*29+S*29+K;    //换算成纳特;return ret;
}
//将纳特换算成 加隆.银西.纳特 格式的函数;
struct Money IntToMoney(int sub){struct Money ret;if(sub<0){sub=-sub;}ret.total=sub;ret.Galleon=sub/(17*29);    //这里有可能是0;sub=sub-(17*29)*ret.Galleon;ret.Sickle=sub/29;sub=sub-29*ret.Sickle;ret.Knut=sub;return ret;
}
//输出钱币的函数;
void output(struct Money out){cout<<out.Galleon<<'.'<<out.Sickle<<'.'<<out.Knut<<endl;
}
int main(){//输入;price P;P=input();    //输入价格;money A;A=input();    //输入钱;//计算差价;int sub=A.total-P.total;    //纳特格式下的差价;//输出;if(sub<0){    //若为负数则输出负号;cout<<'-';}money out=IntToMoney(sub);output(out);return 0;
}

这篇关于1037 在霍格沃茨找零钱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792202

相关文章

nyoj 1037 Postscript of Tian Ji racing

一道卡贪心的题。 也算一道改编题。 此题的解法推荐为二分图的最大匹配。 首先将输入数据转换一下,然后将满足题意的一组牌建立条边,最终边的覆盖数即为 LN 最后可得的分数。 然后求出最大匹配即可。 代码如下: #include<stdio.h>#include<string.h>char card[30][5];char s[5];int map[30][30];

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)

完全背包问题                  和01背包最大区别就是一个物品可以重复放多次,因此遍历空间时可以从前往后。 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt

代码随想录:322. 零钱兑换

322. 零钱兑换 class Solution {public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(10005,INT_MAX);//由于后面要取最小值,所以初始大一些dp[0]=0;//总金额为0个数一定为0for(int i=0;i<coins.size();i++){for(int j=coins

微信支付商家转账到零钱:快速开通攻略及功能全解

一、申请资格与条件 哪些商家可以申请商家转账到零钱功能? 仅公司性质的商户可以申请,个体工商户当前不支持此功能。商户账号应无正在进行的处罚,且历史无风险行为。微信支付账户没有历史违规记录。商家系统已经上线并可以访问。是否需要满足开通满90天和连续交易30天的要求? 目前商家转账到零钱及现金红包功能已取消该限制,新注册公司可直接申请,无需等待。 二、申请流程 如何申请开通商家转账到零钱功能

LeetCode 算法:零钱兑换 c++

原题链接🔗:零钱兑换难度:中等⭐️⭐️ 题目 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1, 2, 5], amount = 11 输出:3 解释:11 =

518.零钱兑换2

518.零钱兑换2 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。 示例 1: 输入:amount = 5, coins = [1, 2, 5]输出:4解释:有四种方式可以凑

1037 计算数列和

### 思路 1. 初始化两个变量表示数列的前两项。 2. 使用循环计算数列的前 `n` 项,并累加每一项的值。 3. 输出累加的结果,保留四位小数。 ### 伪代码 1. 初始化 `a = 2.0`,`b = 1.0`,`sum = 0.0` 2. 循环 `n` 次:    - 计算当前项 `current = a / b`    - 将 `current` 加到 `sum`    - 更

518.零钱兑换Ⅱ

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。  题目数据保证结果符合 32 位带符号整数。 class Solution{public int change(int amount, int[] coins){// 从coin

代码随想录训练营 Day38打卡 动态规划 part06 322. 零钱兑换 279. 完全平方数 139. 单词拆分

代码随想录训练营 Day38打卡 动态规划 part06 一、力扣322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例: 输入:coins = [1, 2, 5], amount = 1