EX14 彩票中奖 (lottery.pas/c/cpp)
【题目描述】
小明想试试运气去购买彩票,所以他开始研究彩票大乐透的玩法:
超级大乐透是指由购买者从01—35共35个号码中选取5个号码为前区号码,并从01—12共12个号码中选取2个号码为后区号码组合为一注彩票进行的投注。每注金额人民币2元。小明打算用自己的零花钱去试试运气,选择了一组心目中的幸运数字,买了一张彩票。如下图:
两天后,中奖号码公布,小明开始研究到底中了多少奖金。获奖方式如上右图:例如,中4+2就表示前区有4个数字相同,后区2个数字相同,获得三等奖,奖金3000元。
对照中奖号码对小明来说是一个头疼的问题,他找到你,希望你帮忙写一个程序,只要输入彩票号码和开奖号码,就可以知道奖金值。
输入
第一行7个整数,表示小明购买的彩票号码。前5个为前区号码,范围在1到35,保证不会重复;后2个为后区号码,范围在1到12,保证不重复。
第二行7个整数,表示开奖号码,前5个为前区中奖号码,范围在1到35,保证不重复且保证有序;后2个为后区号码,范围在1到12,保证不重复且有序。
注意,前区和后区是分开选数的,前区的数字可以和后区的数字相同。
输出
输出小明的中奖金额,未中奖输出0。
样例输入
2 7 8 14 18 6 11
2 7 8 14 18 6 11
样例输出
5000000
提示
【样例1解释】
前5加后2都相同,中一等奖,奖金为500万。
【输入输出样例2】
lottery.in
2 7 8 14 18 6 11
1 11 14 18 25 6 11
lottery.out
10
【样例2解释】
前区有14和18两个数字相同,后区6和11都相同,对照表格,中奖2+2为五等奖,奖金10元。
【数据范围】
对于40%的数据,若小明的号码与中奖号码相同,那么其位置也是相同的。例如中奖号码10位于第三个数,那么小明的彩票中如果出现10,也肯定在第三个数。
对于前70%的数据,小明的号码是系统产生的,前区和后区都是从小到大给出的。
对于最后30%的数据,小明的号码可能是手写的,前区或后区的数字不一定有序。
题解
1 #include<stdio.h> 2 int x[10],y[10],t[10][10]; 3 int main(){ 4 int a,b,i,j,u=0,v=0; 5 t[5][2]=5000000; 6 t[5][1]=250000; 7 t[5][0]=t[4][2]=3000; 8 t[4][1]=t[3][2]=200; 9 t[4][0]=t[3][1]=t[2][2]=10; 10 t[3][0]=t[1][2]=t[2][1]=t[0][2]=5; 11 for(i=1;i<=7;i++)scanf("%d",&x[i]); 12 for(i=1;i<=7;i++)scanf("%d",&y[i]); 13 for(i=1;i<=5;i++) 14 for(j=1;j<=5;j++) 15 if(x[i]==y[j])u++; 16 for(i=6;i<=7;i++) 17 for(j=6;j<=7;j++) 18 if(x[i]==y[j])v++; 19 printf("%d\n",t[u][v]); 20 return 0; 21 }
摘自 http://www.cnblogs.com/codeisking/p/5571843.html