2 条题解

  • 1
    @ 2024-12-7 17:56:14

    看我🎭表演

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main(){
    	int p;
    	cin>>p;
    	for(int i=1;i<=31;i++){
    		if(pow(2,i)>p){
    			cout<<i+1;
    			break;
    		}
    	} 
    }
    
    • 1
      @ 2021-8-7 21:15:26

      C++ :

      #include <cstdio>
      #include <iostream>
      using namespace std;
      int p,depth=0;
      
      int gcd( int a,int b )
      {
          if ( !b ) return a;
          return gcd( b,a%b );
      }
      
      bool IDAstar( int sum,int x,int y )
      {
          if ( sum==depth )
          {
              if ( x==p ) return 1;
              else return 0;
          }
          if ( x<<(depth-sum)<p ) return 0;
          if ( p%(gcd(x,y))!=0 ) return 0;
      
          int a,b;
      
          a=x+y; b=y;
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
          a=x+y; b=x;
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
          a=x+x; b=y;
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
          a=x+x; b=x;
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
          a=y+y; b=x; if ( a<b ) swap( a,b );
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
          a=y+y; b=y;
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
          a=x-y; b=x; if ( a<b ) swap( a,b );
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
          a=x-y; b=y; if ( a<b ) swap( a,b );
          if ( b && IDAstar( sum+1,a,b ) ) return 1;
      
          return 0;
      }
      
      int main()
      {
          scanf( "%d",&p );
      
          while ( !IDAstar( 0,1,0 ) ) depth++;
      
          printf( "%d",depth );
      }
      
      • 1

      信息

      ID
      104
      时间
      1000ms
      内存
      128MiB
      难度
      1
      标签
      递交数
      51
      已通过
      41
      上传者