栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

pta乙级1037在霍格沃兹找零钱

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pta乙级1037在霍格沃兹找零钱

思路:
1.输入6个数字分别代表钱币

2.从西可开始比较,如果要付的比实际付的多,向前面借位,but!!!此处要注意,如果纳特为0,借位之后变成-1是不可以的,所以这种情况还要继续向加隆借位。如果加隆减完之后为负数,就直接输出。

注意:此处加隆可以是10的7次方,建议用long long int

#include
using namespace std;
int main()
{
	long long int a=0,b=0,c=0,d=0,e=0,f=0;
	char ch[20]; 
	cin>>a>>ch[0]>>b>>ch[1]>>c>>d>>ch[2]>>e>>ch[3]>>f;
    if(f>=c) c=f-c;
    if(f=b) b=e-b;
	if(e 

错因分析:钱不够时输出的是负数,指三位数都是欠的钱,而在我的代码中,我只有加隆那一位代表缺的钱。


我发现错误不止一个。

1.b和c在运算过程中发生了改变,这时候不能用两个if,应该用if和else if来确保两个指令不会都执行。

2.针对之前的问题,再分个类就好了,很简单。

#include
using namespace std;
int main()
{
	long long int a=0,b=0,c=0,d=0,e=0,f=0;
	char ch[20]; 
	cin>>a>>ch[0]>>b>>ch[1]>>c>>d>>ch[2]>>e>>ch[3]>>f;
	if(d*17*29+e*29+f>=a*17*29+b*29+c)
	{
		if(f>=c) c=f-c;
	    else if(f=b) b=e-b;
		else if(ec)
	    {
	    	c=c-f+29;
	    	b--;
		}
		if(b>=e) b=b-e;
		else if(e>b)
		{
			b=b-e+17;
		    a--;
		}
		a=d-a;
		cout<

搞定!!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号