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

pta乙级1037在霍格沃兹找零钱
文章图片

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
pta乙级1037在霍格沃兹找零钱
文章图片

错因分析:钱不够时输出的是负数,指三位数都是欠的钱,而在我的代码中,我只有加隆那一位代表缺的钱。
我发现错误不止一个。
1.b和c在运算过程中发生了改变,这时候不能用两个if,应该用if和else if来确保两个指令不会都执行。
【pta乙级1037在霍格沃兹找零钱】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<

搞定!!
pta乙级1037在霍格沃兹找零钱
文章图片


    推荐阅读