T1
【题目描述】
蜗牛老师想试试运气去购买彩票,所以他开始研究彩票大乐透的玩法: 超级大乐透是指由购买者从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。
【样例数据】*
input1
2 7 8 14 18 6 11
2 7 8 14 18 6 11
output1
5000000
input2
2 7 8 14 18 6 11
1 11 14 18 25 6 11
output2
10
[数据规模与约定]
对于前 40 % 40\% 40%的数据,若蜗牛老师的号码与中奖号码相同,那么其位置也是相同的。例如中奖号码10位于第三个数,那么蜗牛老师的彩票中如果出现10,也肯定在第三个数。
对于前 70 % 70\% 70%的数据,蜗牛老师的号码前区和后区都是从小到大有序给出。(中奖号码不一定有序)
对于最后 30 % 30\% 30%的数据,蜗牛老师的号码前区或后区的数字不一定有序。
时间限制: 1 s 1s 1s
空间限制: 256 M B 256MB 256MB
【分析】
大模拟,首先读懂题,题面有点长。
规则很简单,没有任何策略,按要求计算相等的个数即可。
前半段和后半段相等的个数可以用二维数组来记录。
具体看代码。
【C++代码】
#include<bits/stdc++.h>
using namespace std;
int buyFront[40],buyBack[15];
int zFront[40],zBack[15];
int main()
{
int n;
for(int i=0;i<5;i++)
cin>>n,buyFront[n]++;
for(int i=0;i<2;i++)
cin>>n,buyBack[n]++;
for(int i=0;i<5;i++)
cin>>n,zFront[n]++;
for(int i=0;i<2;i++)
cin>>n,zBack[n]++;
int front=0,back=0;
for(int i=1;i<=35;i++)
if(buyFront[i]==zFront[i]&&zFront[i]==1)
front++;
for(int i=1;i<=12;i++)
if(buyBack[i]==zBack[i]&&zBack[i]==1)
back++;
if(front==5)
{
if(back==2) cout<<5000000;
else if(back==1) cout<<250000;
else cout<<3000;
}
if(front==4)
{
if(back==2) cout<<3000;
else if(back==1) cout<<200;
else cout<<10;
}
if(front==3)
{
if(back==2) cout<<200;
else if(back==1) cout<<10;
else cout<<5;
}
if(front==2)
{
if(back==2) cout<<10;
else if(back==1) cout<<5;
else cout<<0;
}
if(front==1)
{