时间限制:3秒
空间限制:32768K
热度指数:687
算法知识视频讲解
题目描述
请编写一个方法,输出0到n(包括n)中数字2出现了几次。
给定一个正整数n,请返回0到n的数字中2出现了几次。
测试样例:
10
返回:1
思路:本道题改成针对任何数,从0到n中某个数字的个数,某个数字随便出
#include<iostream>
using namespace std;
int countNumberOf2s(int n,int temp) {
if (n <= 1) return 0;
int cnt = 0, k;
for (int i = 1; k = n / i; i *= 10) {
// k / 10 为高位的数字。
cnt += (k / 10) * i;
// 当前位的数字。
int cur = k % 10;
if (cur > temp) {
cnt += i;
}
else if (cur == temp) {
// n - k * i 为低位的数字。
cnt += n - k * i + 1;
}
}
return cnt;
}
int main()
{
int m;
int n;
while (cin >> n>>m)
{
cout<<countNumberOf2s(n,m)<<endl;
}
return 0;
}
不懂的可以加我的QQ群:261035036(IT程序员面试宝典
群) 欢迎你的到来哦,看了博文给点脚印呗,谢谢啦~~