1 条题解

  • 0
    @ 2025-4-7 21:41:57

    C :

    #include <stdio.h>
    int get(int n, int k)
    {
    	int f = 0;
    	for(int i = 1; i <= n; i++)
    		f = (f + k) % i;
    	return f;
    }
    int main()
    {
    	int n, k, m;
    	while(~scanf("%d%d%d", &n, &k, &m) && n)
    		printf("%d\n", (get(n-1,k)+m)%n+1);
    	return 0;
    }
    

    C++ :

    #include <iostream>
    using namespace std;
    int josephus(int n,int m,int k){
    	int r=1;
    	for(int i=2;i<=n;i++)
    		r=(r+m-1)%i+1;
    	return (r+k-m%n+n-1)%n+1;}
    int main(){
    	for(int n,m,k;cin>>n>>m>>k && !(m==0 && n==0 && k==0);)
    		cout<<josephus(n,m,k)<<endl;}
    

    Java :

    import java.util.*;
    public class Main {
    		static ArrayList<Integer> list =null;
    		private static Scanner in;
    		
    		public static void main(String[] args) {
    			
    			 in = new Scanner(System.in);
    			 int n,k,m,a,c;
    			while(in.hasNext()){
    				n=in.nextInt();
    				k=in.nextInt();
    				m=in.nextInt();
    				if(n==0&&k==0&&m==0) break;
    				list = new ArrayList<Integer>();
    				creatList( n);
    				m=m-1;
    				list.remove(m);
    				
    				while(list.size()!=1){
    					if(list.size()-m>k){
    						list.remove(m+k-1);
    						m=m+k-1;
    					}else if(list.size()-m<k){
    						c=k-(list.size()-m);
    						a=0;
    						while(true){
    							if(a+c<list.size()){
    								list.remove(a+c-1);
    								m=a+c-1;
    								break;
    							}
    							else if(a+c>list.size()){
    								c=c-(list.size()-a);
    								a=0;
    							}else{
    								list.remove(a+c-1);
    								m=0;
    								break;
    							}
    								
    						}
    					}else {
    						list.remove(list.size()-1);
    						m=0;
    					}
    					
    				}
    				System.out.println(list.get(0));
    			}
    		}
    		public static void creatList(int n){
    			for(int i=1;i<=n;i++){
    				list.add(i);
    			}
    			
    		}
    }
    
    • 1

    信息

    ID
    2127
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者