1 条题解

  • 0
    @ 2024-12-18 14:07:32

    C :

    #include <stdio.h>
    
    int p(int n, int m) {
        if (n == 1)
            return 1;
        else
            return (p(n - 1, m) + m - 1) % n + 1;
    }
    
    int main() {
        int n, m;
        scanf("%d %d", &n, &m);
        int i = p(n, m);
        printf("%d", i);
        return 0;
    }
    

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long 
    #define endl '\n';
    int a[1010];
    void solve()
    {
    	int n,m; cin>>n>>m;
    	for(int i=1;i<=n;i++) a[i]=1;
    	int ans=0;
    	int p=0;
    	while(ans!=n-1)
    	{
    		int he=0;
    		while(he<m)
    		{
    			p++;
    			if(p>n) p=1;
    			he+=a[p];
    		}
    		a[p]=0;
    		ans++;//删除的数量
    	}
    	for(int i=1;i<=n;i++)
    	{
    		if(a[i]==1) cout<<i<<endl;	
    	}
    }
    
    signed main()
    {
    //	freopen("F:\\DataTest\\猴子拉手手\\4.in","r",stdin);
    //	freopen("F:\\DataTest\\猴子拉手手\\4.out","w",stdout);
    	ios::sync_with_stdio(0);
    	cin.tie(0); cout.tie(0);
    	int T=1;
    //	cin>>T;
    	while(T--) solve();
    	return 0;
    }
    

    Java :

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[]args){
            Scanner input = new Scanner(System.in);
            int m=input.nextInt();
            int n=input.nextInt();
            int A[]=new int [m];
            int g=m;
            int j=0;
            int i=0;
            while (g>1){
                if(A[j%m]==0){
                    i++;
                    if(i==n){
                        A[j%m]=1;
                        g--;
                        i=0;
                    }
                }
                j++;
            }
           for(int k=0;k<m;k++){
               if(A[k]==0)System.out.println(k+1);
           }
            }
        }
    
    • 1

    信息

    ID
    685
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    提交数
    3
    已通过
    1
    上传者