uva 701——The Archeologists\' Dilemma

Love The Way You Lie 2022-08-09 13:49 110阅读 0赞

题意:一个考古学家发现一些疑似外星人的数字,然后硬扯到2的n次方上,给定一个数,使其是2的n次方的前缀,然后求n,还有个要求即该数作为前缀的长度要小于总长度的一半。

思路:想了很久不得思路的一道题目,看来查了题解,正解是枚举其后面的数字的位数 k,那 么我们会得到不等式,N*10^k<=2^E<N*10^k,化简之后就可以得到log2(N)+k*log2(10)<=E< log2(N+1)+k*log2(10),我们设左右边界为a、b的话,问题就等价于如果在枚举k的过程中出现了[a,b)内有一个整数点的话,那个值 就是E。

code:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <string>
  6. #include <cmath>
  7. using namespace std;
  8. typedef long long ll;
  9. const double lp=log2(10);
  10. int main()
  11. {
  12. int n,p,q,f,i;
  13. double t1,t2;
  14. while (~scanf("%d",&n)&&n)
  15. {
  16. f=0;
  17. t1=log2(n),t2=log2(n+1);
  18. for (i=log10(n)+2;;i++)
  19. {
  20. p=t1+i*lp,q=t2+i*lp;
  21. if (p<q)
  22. {
  23. printf("%d\n",q);
  24. f=1;
  25. break;
  26. }
  27. }
  28. if (f==0) printf("no power of 2\n");
  29. }
  30. }

发表评论

表情:
评论列表 (有 0 条评论,110人围观)

还没有评论,来说两句吧...

相关阅读

    相关 UVA11752 The Super Powers

    最近几天的状态着实不好,数电设计的答辩不能更逗,万幸是终于到家了,看到群里有各种群赛十分开心,希望能找回刷题的动力,调整下状态。 这道题是很久前做的,细节记不太清了。。。

    相关 uva 1623——Enter The Dragon

    题意:有n个装满水的湖,可以预知将来m天下雨情况,每次下满一个湖,或者不下,不下雨的时候可以让某个湖变干,问是否存在一种方案使得每次下雨之前湖总是干的。 思路:贪心

    相关 UVA 12099 The Bookcase(dp)

    题意: 有N本书,第i本书有一个高度Hi和宽度Wi,现要求构建一个三层的书架,你必须把所有书放在书架上。设三层高度(该层最高的书的高度)之和为h,书架总宽度(即每层总宽度