ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-08-31 09:35:04  阅读:206  来源: 互联网

标签:沃茨 20 cout int 代码 cin && 霍格 include


// 未简化前代码
#include <bits/stdc++.h>
using namespace std;

int main() {
	int P[3], A[3], result[3], p, a;
	char c;
	cin >> P[2] >> c >> P[1] >> c >> P[0]; 
	cin >> A[2] >> c >> A[1] >> c >> A[0]; 
	
	// 判断大小
	p = P[2] * 10000 + P[1] * 100 + P[0];
	a = A[2] * 10000 + A[1] * 100 + A[0];
	
	// 不够钱需要倒贴钱 输出负号 
	if(p > a){
		cout << '-';
		// 倒贴钱反过来相减 
		for(int i = 0; i < 3; i++){
			
			if(P[i] < A[i]){
				
				P[i+1]--;
				
				if(i == 0){
					P[i] += 29;				
				}
				else if(i == 1){
					P[i] += 17;	
				}
			}
			
			// 够钱直接相减 
				result[i] = P[i] - A[i];
		}
	} 
	else{
		// 29 K = 1 S, 17 S = 1 G 
		for(int i = 0; i < 3; i++){
			
			// 向高位借钱
			// 如果高位为 0 ? 
			if(A[i] < P[i]){
				
				A[i+1]--;
				
				if(i == 0){
					A[i] += 29;				
				}
				else if(i == 1){
					A[i] += 17;	
				}
			}
			
			// 够钱直接相减 
				result[i] = A[i] - P[i];
		}
	}
	
	cout << result[2] << c << result[1] << c << result[0];
}
#include <bits/stdc++.h>
using namespace std;

struct Pay{
	int G, S, K;
}P, A, result;

int main() {
	char c;
	cin >> P.G >> c >> P.S >> c >> P.K; 
	cin >> A.G >> c >> A.S >> c >> A.K; 
	
	// 判断大小不够钱需要倒贴钱 输出负号 
	if(	P.G > A.G ||
		P.G == A.G && P.S > A.S ||
		P.G == A.G && P.S == A.S && P.K > A.K){
		cout << '-';
		// 交换内容 
		swap(P, A);
	} 
	// 29 K = 1 S, 17 S = 1 G 
	if(A.K < P.K){
		A.S--, A.K += 29; 
	} 
	if(A.S < P.S){
		A.G--, A.S += 17; 
	} 
	result.G = A.G - P.G;
	result.S = A.S - P.S;
	result.K = A.K - P.K;
	
	cout << result.G << c << result.S << c << result.K;
}

因为上下两个选择判断只是将运算对象的位置进行了互换,所以可以用 swap() 函数。但不知道为什么如果是数组用,会有一些测试点没能够正确交换。如果用结构体就没有这个问题。

不过如果实际考试的时候,如果不晓得为什么错了,像原本未精简之前直接将代码复制过来,然后改一改变量也可以,只不过代码看起来长一点,但结果上是一致的。


if(A.K < P.K){
	A.S--, A.K += 29; 
} 
if(A.S < P.S){
	A.G--, A.S += 17; 
}

如果变成结构体的时候也记得遵循从低位向高位运算的顺序。否则如果没按照这顺序就会有问题。

参考代码

标签:沃茨,20,cout,int,代码,cin,&&,霍格,include
来源: https://www.cnblogs.com/Atl212/p/15206374.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有