标签:blog sample str output bsp rip 约瑟夫 nbsp 数字
Description
题目:n个数字(1,2,3…,n)形成一个圆圈,从数字1开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
当一个数字删除后,从被删除数字的下一个继续删除第m个数字。
求出在这个圆圈中剩下的最后一个数字。
Input
输入:
n=9
m=5
Output
The last one is 8
Sample Input
9 5
Sample Output
8
数学方法:
#include <stdio.h> int main() { int i,n,m,l; scanf("%d %d",&n,&m); for(i=2,l=0;i<=n;i++) l=(l+m)%i; printf("%d\n",l+1); return 0; }
数组模拟:
#include<stdio.h> #include<string.h> int main() { int m,n,t[1000]={0}; int i,j,sum=0; scanf("%d%d",&m,&n); for(i=1,j=0;;i++) { if(!t[i]) { j++; if(j==n) { t[i]=1; j=0; sum++; } if(sum==m) { printf("%d",i); break; } } if(i==m) i=0; } return 0; }
标签:blog sample str output bsp rip 约瑟夫 nbsp 数字
原文地址:http://www.cnblogs.com/ljhacm/p/6722463.html