5 条题解

  • 2
    @ 2025-1-26 22:38:08
    #include <iostream>
    using namespace std;
    
    const int NUMBERS_PER_TICKET = 7;
    const int NUM_PRIZES = 7;
    
    int main() {
        int n;
        cin >> n;
        int winningNumbers[NUMBERS_PER_TICKET];
        // 读取中奖号码
        for (int i = 0; i < NUMBERS_PER_TICKET; ++i) {
            cin >> winningNumbers[i];
        }
    
        int prizeCounts[NUM_PRIZES] = {0};  // 初始化各奖项中奖张数为 0
    
        // 处理每张彩票
        for (int i = 0; i < n; ++i) {
            int ticketNumbers[NUMBERS_PER_TICKET];
            // 读取当前彩票的号码
            for (int j = 0; j < NUMBERS_PER_TICKET; ++j) {
                cin >> ticketNumbers[j];
            }
    
            int matchCount = 0;  // 记录当前彩票与中奖号码相同的数量
            // 统计相同号码的数量
            for (int j = 0; j < NUMBERS_PER_TICKET; ++j) {
                for (int k = 0; k < NUMBERS_PER_TICKET; ++k) {
                    if (ticketNumbers[j] == winningNumbers[k]) {
                        ++matchCount;
                        break;
                    }
                }
            }
    
            // 根据相同号码的数量确定中奖等级并更新对应奖项的中奖张数
            if (matchCount > 0) {
                prizeCounts[NUM_PRIZES - matchCount]++;
            }
        }
    
        // 输出各奖项的中奖张数
        for (int i = 0; i < NUM_PRIZES; ++i) {
            cout << prizeCounts[i]<<" ";
        }
        cout << endl;
        return 0;
    }
    这个题解是我的思路加上AI给的修改,下面两位学长的方法很好,是对我们输的号码,一个一个进行判断,但我的思路是把所有的号码全部输入完,然后进行两层for循环找到我们的数,然后又通过一个数组来储存答案,发现了中奖个数与数组下标的关系,然后进行储存,最后进行输出。
    
    • 1
      @ 2024-10-11 12:49:20

      学长的方法

      #include <stdio.h>

      int main () {

      int n;

      scanf("%d", &n);

      int a[7];

      int b;

      for (int i = 0; i < 7; i++) {

      scanf("%d", &a[i]);

      }

      int t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0;

      for (int k = 0; k < n; k++) {

      int t0 = 0;

      for (int p = 0; p < 7; p++) {

      scanf("%d", &b);

      for (int q = 0; q < 7; q++) {

      if (b == a[q]) {

      t0++;

      break;

      }

      }

      }

      if (t0 == 7) {

      t1++;

      } else if (t0 == 6) {

      t2++;

      } else if (t0 == 5) {

      t3++;

      } else if (t0 == 4) {

      t4++;

      } else if (t0 == 3) {

      t5++;

      } else if (t0 == 2) {

      t6++;

      } else if (t0 == 1) {

      t7++;

      }

      }

      printf("%d %d %d %d %d %d %d\n", t1, t2, t3, t4, t5, t6, t7);

      return 0;

      }

      • 1
        @ 2024-5-7 19:43:28
        #include <stdio.h>
        int main()
        {
            int times,time;
            scanf("%d",&times);
            int a[9],b,i,j,t,r[9]={0};
            for(i=1;i<=7;i++)scanf("%d",&a[i]);
            for(time=1;time<=times;time++)
            {
                t=0;
                for(i=1;i<=7;i++)
                {
                    scanf("%d",&b);
                    for(j=1;j<=7;j++)
                        if(b==a[j]){t++;break;}
                }
                r[t]++;
            }
            for(i=7;i>=1;i--)printf("%d ",r[i]);
            return 0;
        }//
        
        • @ 2025-1-26 21:58:45

          确实牛的思路

      • 0
        @ 2025-11-3 9:12:26
        #include<stdio.h>
        
        int main()
        {
            int n;
            scanf("%d", &n);
            int arr[7];
            for(int i=0;i<7;i++)
            {
                scanf("%d", &arr[i]);
            }
            int brr[n][7];
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<7;j++)
                {
                    scanf("%d",&brr[i][j]);
                }
            }
            int a=0,b=0,c=0,d=0,e=0,f=0,g=0;
            for(int i=0;i<n;i++)
            {
                int sum=0;
                for(int j=0;j<7;j++)
                {
                    for(int k=0;k<7;k++)
                    {
                        if(arr[k]==brr[i][j])
                        {
                            sum++;
                            break;
                        }
                    }
                }
                switch(sum)
                {
                    case 7: a++;
                    break;
                    case 6: b++;
                    break;
                    case 5: c++;
                    break;
                    case 4: d++;
                    break;
                    case 3: e++;
                    break;  
                    case 2: f++;
                    break;
                    case 1: g++;
                    break;
                    default:
                    break;
                }
            }
            printf("%d %d %d %d %d %d %d", a,b,c,d,e,f,g);
            return 0;
        }
        
        • 0
          @ 2025-10-12 12:19:57
          #include<stdio.h>
          int main()
          {
                  int n;
                  scanf("%d",&n);
                  int caipiao[7];
                  for(int i=0;i<7;i++)
                  {
                      scanf("%d",&caipiao[i]);
                  }
                  int a[n][7];
                  for(int i=0;i<n;i++)
                  {
                      for(int j=0;j<7;j++)
                      {
                          scanf("%d",&a[i][j]);
                      }
                  }
                  int b[7]={0};
                  for(int i=0;i<n;i++)
                  {
                      int count=0;
                      for(int j=0;j<7;j++)
                      {
                          for(int k=0;k<7;k++)
                          {
                              if(a[i][j]==caipiao[k])
                              {
                                count++;
                                break;
                              }
                          }
                      }
                      switch(count)
                      {
                          case 7:
                          b[6]++;
                          break;
                          case 6:
                          b[5]++;
                          break;
                          case 5:
                          b[4]++;
                          break;
                          case 4:
                          b[3]++;
                          break;
                          case 3:
                          b[2]++;
                          break;
                          case 2:
                          b[1]++;
                          break;
                          case 1:
                          b[0]++;
                          break;
                      }
                  }
                  for(int i=6;i>=0;i--)
                  {
                      printf("%d ",b[i]);
                  }
              return 0;
          }
          
          • 1

          信息

          ID
          100
          时间
          1000ms
          内存
          256MiB
          难度
          8
          标签
          (无)
          递交数
          951
          已通过
          121
          上传者