l.新第k人

mac2022-06-30  23

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

 

转载于:https://www.cnblogs.com/KafuuMegumi/p/10123998.html

最新回复(0)