题意
中文不解释
思路
这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为
(1)数数
(2)所数的数从列表中取出
(3)判断是否为1,是则输出,不是则继续
总结
暂无
代码
(I)方法一:使用数组+前移
(1)C
#include "stdio.h"
//#include "stdlib.h"
#define max 300
int a[max+2];
int main()
{
int n,m;
int i,j;
while(scanf("%d%d",&n,&m) != EOF && !(n==0 && m==0))
{
for(i=0;i<n;i++) a[i]=i+1;
i=0;
while(n!=1)
{
i=(i+m-1)%n;
for(j=i+1;j<n;j++){a[j-1]=a[j];}
n--;
}
printf("%d\n",a[0]);
}
//system("pause");
return 0;
}
(2)C++
#include "iostream"
//#include "cstdlib"
using namespace std;
const int MAX = 300;
int a[MAX+2];
int main()
{
int n,m;
while((cin>>n>>m) && !(n==0 && m==0))
{
int i;
for(i=0;i<n;i++) a[i]=i+1;
i=0;
while(n!=1)
{
i=(i+m-1)%n;
for(int j=i+1;j<n;j++){a[j-1]=a[j];}
n--;
}
cout<<a[0]<<endl;
}
//system("pause");
return 0;
}
- 大小: 3.4 KB
- 大小: 3.2 KB
- 大小: 9.6 KB