输入两个数后,开始讲解。
1.首先定义一个for循环,判断l到r(下面代码中是a和b)之间的每一个数。
2.接着,我们知道r(下面代码中的b)可能的最大值是10000,所以我们可以总共分为4个阶段,分别是i<10
、10<i<100
、100<i<1000
、1000<i<10000
。
3.分别求出循环中的每一个位判断是否为2,符合要求,个数就加一。但怎么进行判断?具体如下:
1.有一个两位数99。
2.99%10是个位,求出9。(百分号是取余运算符号)。
3.(99-9)/10就是十位,也是9。
三位数、四位数也是一样,不过步骤会更多一些(可以看下方代码)。
4.然后输出个数就可以啦~是不是超简单?
代码解释:x是个数。g代表个位,s代表十位,bai代表百位,q代表千位。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,x=0;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
if(i<10)
{
if(i==2)x++;
}
if(i<100&&i>10)
{
int g=i%10;
if(g==2)x++;
int s=(i-g)/10;
if(s==2)x++;
}
if(i<1000&&i>100)
{
int gs=i%100;
int g=gs%10;
if(g==2)x++;
int s=(gs-g)/10;
if(s==2)x++;
int bai=(i-gs)/100;
if(bai==2)x++;
}
if(i>1000)
{
int gsb=i%1000;
int gs=gsb%100;
int g=gs%10;
if(g==2)x++;
int s=(gs-g)/10;
if(s==2)x++;
int bai=(gsb-gs)/100;
if(bai==2)x++;
int q=(i-gsb)/1000;
if(q==2)x++;
}
}
cout<<x;
}
你学会了吗?
真**简单易懂啊