题意
中文不解释
思路
这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为
(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