1 条题解

  • 0
    @ 2023-6-11 12:18:10

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int a[110];//队号 
    int b[110];//每队总得分 
     
    int main(){
        int n,i,x,c;
        cin>>n>>x;
        a[0] = x;
        for(i = 1;i < n;i++){
            a[i] = ((a[i - 1] * 3703 + 1047) % n) + 1;
        }
         
        c = 0;//记录连续数字的次数 
        for(i = 0;i < n;i++){
            c++;
             
            if(c <= 3){
                b[a[i]] = b[a[i]] + c;//得分  
            }else{
                b[a[i]] = b[a[i]] + 3;//得分  
            }
             
            //如果连续数字结束 
            if(i == n - 1 || a[i] != a[i + 1]){
                c = 0;
            }       
        } 
         
        int max = 0;
        for(i = 0;i < 110;i++){
            if(b[i] > max){
                max = b[i];
            }
        } 
        cout<<max<<endl;
        return 0;
    }
    
    
    

    Python :

    s = input().split()
    # 球队个数
    n = int(s[0])
    # 第一场
    t = int(s[1])
    # 定义队列a
    a = [0] * (n + 1)
    a[1] = t
    # 队伍从1号开始
    # 生成之后的数值
    for i in range(2, n + 1):
        a[i] = ((a[i - 1] * 3703 + 1047) % n) + 1
    
    # 定义记录获胜队伍得分数组
    score = [0] * (n + 1)
    # 要看连续几次,第一场
    score[a[1]] += 1
    # 第2场
    if a[2] == a[1]:
        score[a[2]] += 2
    else:
        score[a[2]] += 1
    # 场次  i场次 a[i]第i场获胜的队伍编号  score[a[i]]获胜队伍的得分
    for i in range(3, n + 1):
        if a[i] == a[i - 1] and a[i] == a[i - 2]:
            score[a[i]] += 3
        elif a[i] == a[i - 1]:
            score[a[i]] += 2
        else:
            score[a[i]] += 1
    
    print(max(score))
    
    
    • 1

    信息

    ID
    2475
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者