3751 - 约瑟夫环
Time Limit : 1 秒
Memory Limit : 128 MB
有编号从 1 到 N 的 N 个人坐成一圈报数,报到 M 的人出局,下一位再从1开始,?如此持续,直止剩下一位为止,报告此人的编号 X。输入 N,M,求出 X。
Input
输入格式
第一行:两个整数N,M (0< N,M < 30,000,000) ,表示开始人数N和报数到M。
Output
输出格式
一个整数X,表示剩下的最后一个数。
Examples
Input Format
5 2
Output Format
3
Solution C
#include "stdio.h" int m,n; int F(int t) { if(t==1) return 0; else return (F(t-1)+m)%t; } int main() { scanf("%d%d",&n,&m); printf("%d\n",F(n)+1); return 0; }
Solution C++
#include<stdio.h> int main() { long n,m; scanf("%ld%ld",&n,&m); int i,r=0; for (i=2;i<=n;i++) { r=(r+m)%i; } printf("%d\n",r+1); return 0; }