文章
11
粉丝
406
获赞
3
访问
85.0k
#include<iostream>
#include<cmath>
using namespace std;
// 计算num位数字内所有含2的数字数量
int innerSize(int num)
{
if(num==1){return 1;}
if(num<=0){return 0;}
return innerSize(num-1)*10+pow(10,num-1);
}
// 计算整数位数
int getLen(int num)
{
int length=0;
while(num)
{
num/=10;
length++;
}
return length;
}
// 递归计算含2的数量
int contTwo(int limitNum)
{
if(limitNum<=1){return 0;}
int length = getLen(limitNum);
int thresh = int(limitNum/int(pow(10,length-1))),
rest=int(limitNum%(int(pow(10,length-1))));
if(thresh>2)
{
return thresh*innerSize(length-1)+int(pow(10,length-1))+contTwo(rest);
}
else if(thresh<2)
{
return thresh*innerSize(length-1)+contTwo(rest);
}
else
{
return thresh*innerSize(length-1)+(rest+1)+contTwo(rest);
}
}
int main(){
int l,r;
cin>>l>>r;
if(l>r){cout<<0;ret...
登录后发布评论
暂无评论,来抢沙发