彩票摇奖
原题链接: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 }
一切无法杀死我的,都将使我变得更加强大。