当前位置: 代码迷 >> C语言 >> [有奖趣题]ACM大赛题目
  详细解决方案

[有奖趣题]ACM大赛题目

热度:381   发布时间:2004-11-17 22:03:00.0
[有奖趣题]ACM大赛题目

1dollar = 100cents (1元美金=100分钱)

Penny=$0.01 Nickel=$0.05 Dime=$0.10 Quarter=$0.25 Half Dollar=$0.50

美金中有以上五种金币,用以上金币拼出1元美金就是100分,有多少种方法。

例如,输入1,就输出292,就是说,1元可以有292种组合方法。 而且,由运行时输入,然后给出方法数,范围是2元以下(含2元)。

[此贴子已经被作者于2004-11-17 22:08:52编辑过]

搜索更多相关的解决方案: ACM  大赛  题目  

----------------解决方案--------------------------------------------------------

题目的意思是,用5种不同面值的金币,组成1元美金的可能数。

例如:100个1分钱是一种方法,20个5分钱,10个10分钱,4个25分,2个50分,还可以混合来组。


----------------解决方案--------------------------------------------------------

#include<stdio.h>

main()

{int i=0,a,b,c,d,e,f;

printf("Input the money:"); scanf("%d",&f);

for(a=0;a<=100;a++)

for(b=0;b<=20;b++)

for(c=0;c<=10;c++)

for(d=0;d<=4;d++)

for(e=0;e<=2;e++)

if(a+b*5+c*10+d*20+e*50==f*100) i++;

printf("The total=%d\n");

getch();

}


----------------解决方案--------------------------------------------------------

百鸡百钱的变形!!!!

可以注意一下,几个循环把哪个循环放到最外面,从而减少循环次数!!!


----------------解决方案--------------------------------------------------------

上面的大虾说的对,就是用穷举法做的

不过,上面的这个程序好象不对的!!


----------------解决方案--------------------------------------------------------
给空前15分
----------------解决方案--------------------------------------------------------
不过好像给得太少了
----------------解决方案--------------------------------------------------------

#include<iostream.h> #include<stdlib.h>

void main() { int count=0; float temp; cout<<"input value of money:"; cin>>temp; int value=int(temp*100); for(int half=0; 50*half<=value; half++) for(int quarter=0; 25*quarter+50*half<=value; quarter++) for(int dime=0; 10*dime+25*quarter+50*half<=value; dime++) for(int nickle=0; 5*nickle+10*dime+25*quarter+50*half<=value; nickle++) for(int penny=0; penny+5*nickle+10*dime+25*quarter+50*half<=value; penny++) if(penny+5*nickle+10*dime+25*quarter+50*half==value) count++; cout<<"There are "<<count<<" ways to make $"<<temp<<endl; system("pause"); }


----------------解决方案--------------------------------------------------------
马甲动作好快。给分你。呵呵……
----------------解决方案--------------------------------------------------------
以下是引用风中涟漪在2004-11-19 21:54:36的发言:

#include<iostream.h> #include<stdlib.h>

void main() { int count=0; float temp; cout<<"input value of money:"; cin>>temp; int value=int(temp*100); for(int half=0; 50*half<=value; half++) for(int quarter=0; 25*quarter+50*half<=value; quarter++) for(int dime=0; 10*dime+25*quarter+50*half<=value; dime++) for(int nickle=0; 5*nickle+10*dime+25*quarter+50*half<=value; nickle++) for(int penny=0; penny+5*nickle+10*dime+25*quarter+50*half<=value; penny++) if(penny+5*nickle+10*dime+25*quarter+50*half==value) count++; cout<<"There are "<<count<<" ways to make $"<<temp<<endl; system("pause"); }

抗议!严重抗议!!这种答案还有分给?!
----------------解决方案--------------------------------------------------------
  相关解决方案