1 条题解
-
0
自动搬运
来自洛谷,原作者为

K0stlin
LIFE IS A CIRCLE.搬运于
2025-08-24 21:40:33,当前版本为作者最后更新于2018-11-05 14:31:19,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
推公式
0,1,2,3,4……k,k+1,……M-1,共M个人中,要删除报数为k的人,假设最后的幸存者编号为X,则第一只被删除的人的编号一定是(K-1)%M,第一个人出圈后下一轮是:K,k+1……M-1,0,1……k-1,这M-1只人。把这个序号映射为以下编号 0,1,2,3,4……,k+1,……M-2,在这个序列中,假设最后的幸存者编号为Y,则X=(Y+K)%M
K→0 k+1→1 K+2→2
则有
int what(int n,int k){ int t=0; for(int i=2;i<=n;i++)t=(t+k)%i; return t+1; }main:
int main(){ scanf("%d",&n); while(1){ int s=what(n,2);//交替出圈,所以k=2 if(s==n){ans+=s*2;break;}//剩下的每人2元 ans+=(n-s);//出去的发1元 n-=(n-s);//该出去的出去 } printf("%d",ans); return 0; }by 我的老师+我自己的思考
PS:因为一开始写错成猴子选大王了,与题意不符,改了一下,希望管理员再审一下。谢谢!
- 1
信息
- ID
- 1830
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者