题目描述
有 n 个球队,编号为 1,2,3, ……, n,共进行 n 场比赛。每场比赛有一个胜队。计分
方法如下:
是连胜中的第一次胜利,则本次胜利得 1 分。
是连胜中的第二次胜利,则本次胜利得 2 分。
是连胜中的第三次胜利,则本次胜利得 3 分。
连胜超过三次以上的胜场,每场得 3 分。
如 n=12,比赛的胜队为 1 2 1 1 3 2 1 1 1 1 4 2,计分如下:
队 1:1+1+2+1+2+3+3=13 分
队 2:1+1+1=3 分
队 3:1 分
队 4:1 分
其余队为 0 分
输入格式
输入第一行两个整数 n 和 x1,其中 n 为球队数,x1 为第一次胜利的队号。第 i 场
比赛(
i≥2)胜队的编号由以下公式确定的:
xi = (( xi-1*3703 + 1047 ) mod n )+1
输出格式
输出一行一个整数,即得分最多队的分数。
样例输入
10 5
样例输出
3
提示/说明
100%的数据:1≤n≤100
AC代码
#include<bits/stdc++.h>
using namespace std;
int n,d,dd,v=1,sc[10010],c;
int main(){
cin>>n>>d;
sc[d]++;
for(int i=2;i<=n;i++){
dd=((d*3703+1047)%n)+1;
if(dd==d){
v++;
}else{
v=1;
}
if(v<3){
sc[dd]+=v;
}else{
sc[dd]+=3;
}
c=max(c,sc[dd]);
d=dd;
}
cout<<c;
return 0;
}