1. 程式人生 > >全國綠色計算大賽 預賽第二階段(C++)第一關

全國綠色計算大賽 預賽第二階段(C++)第一關

第一關:

挑戰任務

“綠盟杯”比賽過後,賽事承辦方的各位工作人員們就開始分頭統計各個參賽隊伍和同學的成績了。賽事規模很大,有10000個隊伍參加。經過工作人員認真負責的統計,本來已經統計好了這一萬個隊伍的分數和排名,並按照排名從高到低依次進行了編號(從110000)但是由於一個非常偶然的因素,導致其中三個編號的資料丟失,而且剩餘編號的順序也全被打亂了。

你需要編寫一個程式,根據還保留的統計資料,來判斷哪些編號的資料丟失了,並將這些編號按照從小到大的順序重新拼接為一個新數字,然後計算這個新數字除以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*********/
		}