l.新第k人
阿新 • • 發佈:2018-12-15
l: 新第k人
Time Limit: 1 Sec Memory Limit: 32 MBDescription
TT在跟朋友一起做遊戲,
遊戲規則:n個小朋友(從1開始編號)手拉手,從第一個小朋友開始報數,喊出k的小朋友從圈中出去,然後下個小朋友從1開始報數。當圈中只剩下一個小朋友的時候結束。
TT特別喜歡233這個數字,他把遊戲修改為第233人。即報出233的人要退出遊戲。
由於第233人太好玩了,玩的人越來越多,現在你還會知道誰會勝出嗎?
Input
T(T組,T<=10000)
T行,每行一個數字n代表當前有n個小朋友(n<=10000);
Output
對每組輸出勝出者的編號
Sample Input
1 5
Sample Output
5
HINT
第一個出去的是3號:1 2 4 5
第二個出去的是4號,1 2 5
第三個出去的是1號,2 5
第四個出去的是2號,5
5勝出
在k題的基礎上,發現當k=233為定值時,答案是有規律的,設dp[n]為答案,則dp[n]=(dp[n-1]+k)%n(不知道怎麼證明,如果有大佬知道證明方法歡迎在下方評論)。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int dp[10005]; 5 int main(){ 6 for(int i=1;i<10001;i++)dp[i]=(dp[i-1]+232)%i+1; 7 int T,n; 8 scanf("%d",&T); 9 while(T--){ 10 scanf("%d",&n); 11 printf("%d\n",dp[n]);View Code12 } 13 return 0; 14 }