題目描述:spa
小明 PAT 考了滿分,高興之餘決定發起微博轉發抽獎活動,從轉發的網友中按順序每隔 N 我的就發出一個紅包。請你編寫程序幫助他肯定中獎名單。 輸入格式: 輸入第一行給出三個正整數 M(≤ 1000)、N 和 S,分別是轉發的總量、小明決定的中獎間隔、以及第一位中獎者的序號(編號從 1 開始)。隨後 M 行,順序給出轉發微博的網友的暱稱(不超過 20 個字符、不包含空格回車的非空字符串)。 注意:可能有人轉發屢次,但不能中獎屢次。因此若是處於當前中獎位置的網友已經中過獎,則跳過他順次取下一位。 輸出格式: 按照輸入的順序輸出中獎名單,每一個暱稱佔一行。若是沒有人中獎,則輸出 Keep going...。 輸入樣例 1: 9 3 2 Imgonnawin! PickMe PickMeMeMeee LookHere Imgonnawin! TryAgainAgain TryAgainAgain Imgonnawin! TryAgainAgain 輸出樣例 1: PickMe Imgonnawin! TryAgainAgain 輸入樣例 2: 2 3 5 Imgonnawin! PickMe 輸出樣例 2: Keep going...
題目關鍵:blog
注意已中獎帳號的存儲與比較 若是目標帳號已經中獎,則向下順延
本人AC代碼:字符串
# include <stdio.h> # include <string.h> # define Max 1000 int main() { int n,m,s,i,j,num = 0, flag=0; char str[Max][21],win[Max][21]; scanf("%d %d %d",&m,&n,&s); s--; getchar(); for(i = 0;i < m;i++) gets(str[i]); if(s >= m) { printf("Keep going..."); return 0; } for (i=s; i<m; ) { flag = 0; // 判斷是否中過獎 for (j=0; j<num; j++) { if (0 == strcmp(str[i], win[j])) { flag = 1; break; } } // 如沒有 if (flag == 0) { puts(str[i]); strcpy(win[num++],str[i]); i+=n; } else // 不然 { i++; } } return 0; }
RRRget