fork(2) download
  1. #include <stdio.h>
  2.  
  3. long long compute(int drops, int eggs, int floors)
  4. {
  5. int i;
  6. long long ans = 0;
  7. double t = 1;
  8. for(i=1; ans<=floors && i<=eggs; ++i, ans+=t)
  9. t *= (drops + 1.0 - i) / (1.0 * i);
  10. return ans;
  11. }
  12.  
  13. int main(void)
  14. {
  15. int floors, eggs;
  16. scanf("%d%d", &floors, &eggs);
  17.  
  18. long long m, s=0, e=floors;
  19. while(e-s>1) {
  20. m = (s+e)/2;
  21. if(compute(m, eggs, floors)<floors) s = m;
  22. else e = m;
  23. }
  24. printf("%lld\n", s+1);
  25. }
Success #stdin #stdout 0s 9432KB
stdin
1000
3
stdout
19