求从1到n整数中1出现的次数:O(logn)算法
程序员文章站
2024-03-15 17:02:42
...
剑指offer上的一题,但是感觉这位兄弟的解法更好
#include<iostream>
using namespace std;
#define N 2000
int cnt(int n)
{
if (n < 1)
{
return 0;
}
int count = 0;
int base = 1;
int round = n;
while (round > 0)
{
int weight = round % 10;
round /= 10;
count += round * base;
if (weight == 1)
{
count += (n % base) + 1;
}
else if (weight > 1)
{
count += base;
}
base *= 10;
}
return count;
}
int main()
{
int n;
cin >> n;
cout << cnt(n) << endl;
return 0;
}
上一篇: 如何删除一个字符串中的一个字符
下一篇: 用筛选法求100之内的素数