1 条题解

  • 0
    @ 2025-2-14 21:01:01

    C++ :

    #include<iostream>
    #include<cstring>
    using namespace std;
    int n,k=1;
    int t,j,q=1;//j表示跳过去的存在的果子 ,b表示从起点算被吃的果子到本次能吃到的果子 ,q为起点 
    bool a[202]; 
    int shang(int);
    int shang(int x=1)//x代表在数能跨过去的存在没被吃掉的果子,函数返回值也就是q为下一步应该吃掉的是谁。 
    {
    	
        while(x!=t+1)
        {
        	q++;
            if(a[q]==1)
    		{       
              x++;
            }     
            
        }
         return q;
    }
    
    
    int main()
    {
    	int m;
    	cin>>n>>m;
    	
    	memset(a,1,sizeof(a));
    	int i=1;//i表示跳了几次 	
        while(i!=m+1)
        {
            t=i*i*i%5+1; //跳过去几个果子 
            j=shang(1);
    		if(j<=n) //判断应该吃掉的编号是多少。要是大于n,那么应该返回到最底部 
    		{ 
    		   
    		   a[j]=0;
    		   q=j+1;
    		   if(i==m)
    	        {
    	            cout<<j<<endl;
    		        break;	
    	        }
    	    }
    		else
    		{
    		  q=1;
    		  j=shang(1);
    		  a[j]=0;
    		  q=j+1;
    		    if(i==m)
    	          {
    	             cout<<j<<endl;
    		         break;	
    	          }
    	    }
    	   i++;	  
        }
        return 0;
    }
    
    
    • 1

    信息

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