题目:
http://acm.hdu.edu.cn/showproblem.php?pid=6033
题意:
求 2m 中有多少个 10k(k>=1) 这样的数
思路:
其实就是求
2m
的位数减去1,即
log102m+1−1
就是答案:
log102m
=log22mlog210
=mlog210
到这里就可以编程序求出来了,就几行。。。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 10000 + 10, INF = 0x3f3f3f3f;
int cas = 0;
int main()
{
int m;
while(~ scanf("%d", &m))
printf("Case #%d: %d\n", ++cas, int(m / log2(10.0)));
return 0;
}