第一关:
挑战任务
“绿盟杯”比赛过后,赛事承办方的各位工作人员们就开始分头统计各个参赛队伍和同学的成绩了。赛事规模很大,有10000个队伍参加。经过工作人员认真负责的统计,本来已经统计好了这一万个队伍的分数和排名,并按照排名从高到低依次进行了编号(从1到10000)但是由于一个非常偶然的因素,导致其中三个编号的数据丢失,而且剩余编号的顺序也全被打乱了。
你需要编写一个程序,根据还保留的统计数据,来判断哪些编号的数据丢失了,并将这些编号按照从小到大的顺序重新拼接为一个新数字,然后计算这个新数字除以11的余数。如丢失了编号为41、17、25的数据,则最后你需要返回的结果是172541除以11的余数。
编程要求
补全右侧代码区中的getLostScores(int num[])函数,找出丢失的三个编号并按指定格式返回一个新数字除以11的余数。函数参数说明如下:
int nums[] 剩余的被打乱顺序的编号
测试说明
样例1:
输入:
除15、48、56外的其余9997个数组成的乱序数组
输出:
9
样例2:
输入:
除22、76、83外的其余9997个数组成的乱序数组
输出:
5
int getBestTeams(int n,int a[],int kk, int d){
/*********begin*********/
long long f[55][15][2];
long long ans=0;
for(int i=1;i<=n;i++){
f[i][1][0]=f[i][1][1]=a[i];
for(int j=2;j<=kk;++j){
for(int k=i-1;k>=max(i-d,1);--k){
f[i][j][0]=max(f[i][j][0],max(f[k][j-1][0]*a[i],f[k][j-1][1]*a[i]));
f[i][j][1]=min(f[i][j][1],min(f[k][j-1][0]*a[i],f[k][j-1][1]*a[i]));
}
}
ans=max(ans,max(f[i][kk][0],f[i][kk][1]));
}
return ans;
/*********end*********/
}