题目大意:
有一款MP3,叫iCow,里面存储了N(1<=N<=1000)首歌曲,随机播放顺序由以下算法决定。
• 每首歌i有一个初始的Ri(1<=Ri<=10000)
• 下首歌总是最高的Ri(如果Ri==Rj && i
解题思路:
模拟播放的过程即可
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int ifind(int ra[1001],int n)
{
int i;
int max=ra[0],mark=0;
for(i=1;i<n;i++)
{
if(ra[i]>max)
{
max=ra[i];mark=i;
}
}
return mark;
}
int main()
{
int n,t;
int ra[1001];
int i,max_i;
int remain;
scanf("%d%d",&n,&t);
for(i=0;i<n;i++)
{
scanf("%d",&ra[i]);
}
while(t--)
{
max_i=ifind(ra,n);
remain=0;
if(ra[max_i]%(n-1)!=0)
{
remain=ra[max_i]%(n-1);
ra[max_i]=ra[max_i]-remain;
}
for(i=0;i<n;i++)
{
if(i!=max_i)
{
ra[i]=ra[i]+ra[max_i]/(n-1);
}
}
ra[max_i]=0;i=0;
while(remain!=0)
{
if(i!=max_i)
{
ra[i]++;
remain--;
}
i++;
}
printf("%d\n",max_i+1);
}
return 0;
}