2 条题解
-
1大金狮 (mengqingyu) LV 10 @ 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; } } }
-
12021-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
- 上传者