7.[AHOI2001]彩票摇奖

前言

第七期上线啦!


作者:X3B0A1



大家好,今天我们来看一道简单的AHOI

luogu链接

题目大意

首先看一下题目的彩票规则

  • 每张彩票上印有 7 个各不相同的号码,且这些号码的取值范围为 1∼33。
  • 每次在兑奖前都会公布一个由七个各不相同的号码构成的中奖号码。
  • 共设置 7 个奖项,特等奖和一等奖至六等奖。

获奖条件

特等奖,7个号码出现在获奖号码中

一等奖,6个号码出现在获奖号码中

以此类推,

六等奖,1个号码出现在获奖号码中

不需要考虑出现的顺序

现在已知中奖号码和小明买的若干张彩票的号码,请写一个程序帮助小明判断他买的彩票的中奖情况。

输入输出格式

输入

第一行一个自然数 n,表示小明买的彩票张数;

第二行存放了 7 个中奖号码;

在随后的 n 行中每行都有 7 个数,分别表示小明所买的 n 张彩票。

输出

依次输出小明所买的彩票的中奖情况(中奖的张数),首先输出特等奖的中奖张数,然后依次输出一等奖至六等奖的中奖张数。

解题思路

首先,输入n和7个中奖号码

然后循环n次,每次输入小明所买的彩票,遍历小明的数和中奖的数,并且把每两个数都做一次比较,如果相等,记录下来,统计完一个彩票后,判断是几等奖,并记录下来。

最后输出各个奖的数量

参考代码:

#include<iostream>
using namespace std;
// a中奖号码   xm小明的号码   cnt中奖情况
int n,a[10],xm,cnt[10];
int main(){
    
    //输入
    cin >> n;
    for(int i = 0; i < 7; i++){
        cin >> a[i];
    }
    
    for(int i = 0; i < n; i++){
        //清空sum
        int sum = 0;
        for(int j = 0; j < 7; j++){
            //输入小明的号码
            cin >> xm;
            //让该号码与中奖号码依次比较
            for(int k = 0; k < 7; k++){
                if(xm == a[k]){
                    //如果相符,sum加一
                    sum++;
                }
            }
        }
        //最后直接存储在各奖项的统计数组里
        cnt[7-sum]++;
    }
    // 输出
    for(int i = 0; i < 7; i++){
        cout << cnt[i] << " ";
    }
    return 0;
}

thank you

the end.

by X3B0A1

2020.10.20

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。