UVA 11384 最少操作使數列變為零 (找規律)
阿新 • • 發佈:2019-02-09
用最少的操作次數把序列1,2,....,n 中的所有數都變成0.
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<vector> #include<stack> #include<queue> using namespace std; int a[100]; int init() { int i; a[1]=1; for( i=2;;i++) { a[i]=2*a[i-1]+1; if(a[i]>1e9) break; } return i; } int main() { int n,ans,k; k=init(); while(scanf("%d",&n)!=EOF) { ans=lower_bound(a+1,a+1+k,n)-a; printf("%d\n",ans); } return 0; }
方法二:畫圖找規律,f[n]=f[n/2]+1;