1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include<stdio.h> #include<math.h> int main() { int i, j, n; long long ans[70]={0,1}; long double mins, tmp; for(i = 2; i <= 64; i++) { mins = 1e70; for(j = 1; j < i; j++) { tmp = 2 * ans[j] + pow(2.0, i-j) - 1; if(tmp < mins) mins = tmp; } ans[i] = mins; } while(scanf("%d", &n) != EOF) { printf("%I64d\n", ans[n]); } return 0; }
|