1037 在霍格沃茨找零钱 (20 分)(算法分析+代码实现)

这篇博客介绍了如何用C++解决一个数值运算问题,即在霍格沃茨场景下找到合适的找零硬币。作者首先比较两个数的大小,确保较小的数作为被减数,然后逐位进行减法运算,考虑借位情况。代码中展示了具体的实现过程,包括判断和调整数值的逻辑,最后输出找零的结果。
摘要由CSDN通过智能技术生成

1037 在霍格沃茨找零钱 (20 分)

题目链接

算法分析

首先判断两个数的相对大小,保证第一个数比第二个数大,然后再对每一位进行对应相减,如果结果小于零,就向上借位。

代码实现

#include<bits/stdc++.h>
using namespace std;
#define N 5
int a[N], b[N], c[N];
int main(){
	scanf("%d.%d.%d", &a[1], &a[2], &a[3]);
	scanf("%d.%d.%d", &b[1], &b[2], &b[3]);
	int x = a[1] * 10000 + a[2] * 100 + a[3];
	int y = b[1] * 10000 + b[2] * 100 + b[3];
	bool bl = 0;
	if(x > y){
		for(int i = 1; i <= 3; ++ i)
			swap(a[i], b[i]);
		bl = 1;
	}
	c[1] = b[1] - a[1];
	if(b[2] >= a[2])
		c[2] = b[2] - a[2];
	else{
		c[2] = b[2] - a[2] + 17;
		c[1] --;
	}
	if(b[3] >= a[3])
		c[3] = b[3] - a[3];
	else{
		c[3] = b[3] - a[3] + 29;
		c[2] --;
		if(c[2] < 0){
			c[1] --;
			c[2] += 17;
		}
	}
	if(bl) printf("-");
	printf("%d.%d.%d", c[1], c[2], c[3]);
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crer_lu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值