彩票摇奖

原题链接:https://www.luogu.org/problem/show?pid=2550
打算写一写省选的简单题练练手。遂按照难度排序从头开始做。
虽然是入门难度但我也好歹说一下吧。
首先开一个数组记录哪些号码是得奖的,然后我们读入每个奖券,判断每张奖券的号码是否中奖,如果有中奖则累加计数器。我们假设这个计数器叫rank,那么一圈统计下来7-rank是几就是中了几等奖。开一个prize数组,让prize[i]代表有多少i等奖(i为0则是特等奖)
然后循环从0到6输出就好了。。
参考代码:

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <map>
 5 #define maxn 1005
 6 using namespace std;
 7 int n;
 8 int ma[7];
 9 inline int read(){
10     int num = 0;
11     char c;
12     bool flag = false;
13     while ((c = getchar()) == ' ' || c == '\n' || c == '\r');
14     if (c == '-')
15         flag = true;
16     else
17         num = c - '0';
18     while (isdigit(c = getchar()))
19         num = num * 10 + c - '0';
20     return (flag ? -1 : 1) * num;
21 }
22 int prize[7];
23 int num,rank;
24 bool check(int x){
25     for (int i=1;i<=7;i++)
26         if (ma[i] == x)
27             return true;
28     return false;
29 }
30 int main(){
31     n = read();
32     for (int i=1;i<=7;i++)
33         ma[i] = read();
34     for (int _time=1;_time<=n;_time++){
35         rank = 0;
36         for (int i=1;i<=7;i++){
37             num = read();
38             if (check(num))
39                 rank++;
40         }
41         prize[7-rank]++;
42     }
43     for (int i=0;i<=6;i++)
44         printf("%d ",prize[i]);
45     return 0;
46 }

 

posted @ 2017-10-28 22:32  ShawnZhou_Aether  阅读(383)  评论(0编辑  收藏  举报