1. 程式人生 > >l.新第k人

l.新第k人

l: 新第k人

Time Limit: 1 Sec  Memory Limit: 32 MB

Description

 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]);
12 } 13 return 0; 14 }
View Code