2013蓝桥杯【模拟赛】硬币方案

硬币方案有50枚硬币,可能包括4种类型:1元,,5角,1角,5分。已知总价值为20元。求各种硬币的数量。比如:2,34,6,8 就是一种答案。而 2,33,15,0 是另一个可能的答案,显然答案不唯一。你的任务是确定类似这样的不同的方案一共有多少个(包括已经给出的2个)?直接提交该数字,不要提交多余的内容。

思路:什么也别想,比赛时间紧,而且只要求输出答案即可,直接暴力搜索!小技巧:5角,1角,5分化成浮点型数据(double)容易计算出错,把所有数去全乘以100,20块变成2000块,1元,5角,1角,5分变成100元,50元,10元,5元。整形计算出错率大大降低

AC代码:

#include<stdio.h>int b[1000][4];int main(){int i,j,x,p,k=0;int n=2000;for(i=0;i<=50;i++)for(j=0;j<=50;j++)for(x=0;x<=50;x++)for(p=0;p<=50;p++){if(i*100+j*50+x*10+p*5==n&&i+j+x+p==50){b[k][0]=i;b[k][1]=j;b[k][2]=x;b[k][3]=p;printf("%d %d %d %d\n",i,j,x,p);k++;}}for(i=0;i<k;i++){for(j=0;j<4;j++)printf("%d ",b[i][j]);puts("");}printf("总数为:%d\n",k);while(1);return 0;}

答案:50种

所有情况0 38 8 41 36 7 62 33 15 02 34 6 83 31 14 23 32 5 104 29 13 44 30 4 125 27 12 65 28 3 146 24 20 06 25 11 86 26 2 167 22 19 27 23 10 107 24 1 188 20 18 48 21 9 128 22 0 209 18 17 69 19 8 1410 15 25 010 16 16 810 17 7 1611 13 24 211 14 15 1011 15 6 1812 11 23 412 12 14 1212 13 5 2013 9 22 613 10 13 1413 11 4 2214 6 30 014 7 21 814 8 12 1614 9 3 2415 4 29 215 5 20 1015 6 11 1815 7 2 2616 2 28 416 3 19 1216 4 10 2016 5 1 2817 0 27 617 1 18 1417 2 9 2217 3 0 3018 0 8 240 38 8 41 36 7 62 33 15 02 34 6 83 31 14 23 32 5 104 29 13 44 30 4 125 27 12 65 28 3 146 24 20 06 25 11 86 26 2 167 22 19 27 23 10 107 24 1 188 20 18 48 21 9 128 22 0 209 18 17 69 19 8 1410 15 25 010 16 16 810 17 7 1611 13 24 211 14 15 1011 15 6 1812 11 23 412 12 14 1212 13 5 2013 9 22 613 10 13 1413 11 4 2214 6 30 014 7 21 814 8 12 1614 9 3 2415 4 29 215 5 20 1015 6 11 1815 7 2 2616 2 28 416 3 19 1216 4 10 2016 5 1 2817 0 27 617 1 18 1417 2 9 2217 3 0 3018 0 8 24

总数为50组

幸运并非没有恐惧和烦恼;厄运并非没有安慰与希望。

2013蓝桥杯【模拟赛】硬币方案

相关文章:

你感兴趣的文章:

标签云: