1 条题解

  • 0
    @ 2024-12-22 11:04:02

    C :

    #include<stdio.h>
    int main()
    {
       int s[28];
       int k,m,temp;
       int i,k2,t;
       while(scanf("%d",&k),k)
      {
           for(m=k+1;;m++)
          {
              t=m;
              k2=2*k;
              for(i=0;i<k;i++){//k次查找
                temp=t%k2;
                if(temp==0) temp=k2;
                if(temp-k<=0) break;
                else t=m-(k2-temp);
                k2--;
              }
              if(i>=k) { printf("%d\n",m); break;}
    
          }
      }
      return 0;
    }
    
    

    C++ :

    #include<iostream>
    using namespace std;
    
    int main(void)
    {
    	int Joseph[14]={0};
    	int k;
    	while(cin>>k)
    	{
    		if(!k)
    			break;
    		if(Joseph[k])
    		{
    			cout<<Joseph[k]<<endl;
    			continue;
    		}
    		int n=2*k;
    		int ans[30]={0};
    		int m=1;
    		for(int i=1;i<=k;i++)
    		{
    			ans[i]=(ans[i-1]+m-1)%(n-i+1);
    			if(ans[i]<k)
    			{
    				i=0;
    				m++;
    			}
    		}
    		Joseph[k]=m;
    		cout<<m<<endl;
    	}
    	return 0;
    }
    
    • 1

    信息

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