题目传送门

此题题意十分明确:就是让我们统计在[L , R]区间内的数字2出现的次数。

然后我们再看一看此题的数据范围:1≤L≤R≤100000,所以用n log n的复杂度是可以过的。


1.解题思路

我们只需枚举[L,R]区间内每个数字里共出现了多少个2.

2.解题步骤

first,枚举每个数字就不必多说了:

for(int i = l ; i <= r ; i++)//i即为我们枚举的数字
{ }

second,对于每个数字i,统计2出现的次数时,我们需要一位一位去判断,具体方法见例子:

如数字123456,我们想一位一位取出来,不难想到,我们将123456%10后的结果就是数的最后一位->6.

那么,我们又该如何判断下一位呢?只需将数字÷10就可以将最后一位->6给舍去了,按这样重复计算,知道数字为0为止,代码如下:

while(num != 0)
{
printf("%d\n" , num % 10);
num /= 10;
}

运行结果如下图:

显而易见,这样就实现了数位拆分。


完整代码如下:

#include<stdio.h>
using namespace std;
int l , r , ans;
int main()
{
scanf("%d%d" , &l , &r);//读入两个整数l,r
for(int i = l ; i <= r ; i++)//枚举区间内每个数
{
int sum = i;//注意此处的用法,一定要另外用一个变量存这个数,否则会超时
while(sum != 0)//数位拆分
{
if(sum % 10 == 2)//判断这位数是否为2
{
ans++;
}
sum /= 10;//将最后一位舍去
}
}
printf("%d" , ans);
return 0;
}

最新文章

  1. 使用iframe实现图片上传预览效果
  2. CentOS编译安装Apache 2.4.x时报错:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
  3. 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量
  4. [CareerCup] 13.2 Compare Hash Table and STL Map 比较哈希表和Map
  5. java 宠物商店代码
  6. Ajax-(get/post/jQuery方式请求)
  7. struts1标签-&lt;html:radio&gt; 使用注意事项
  8. MemCache缓存和C#自带的Cache缓存
  9. Prolog学习:基本概念 and Asp.net与Dojo交互:仪器仪表实现
  10. hdu_1728_逃离迷宫(bfs)
  11. 学习生命周期activity
  12. ES6新特性 Class的实现
  13. 数据库 用SQL语句操作数据
  14. .Net Core 学习之路-基础
  15. VS调试提示“无法启动程序,“...exe”。系统找不到指定文件
  16. .NET控件集ComponentOne 2018V3发布:新增图表动画及迷你图
  17. numpy.ndarray的赋值操作
  18. Tomcat启动就执行特定方法
  19. oracle 之 控制oracle RAC 进行并行运算
  20. 删除元素(LintCode)

热门文章

  1. CentOS6.5源码安装mysql-5.5.21
  2. 斯坦福算法分析和设计_2. 排序算法MergeSort
  3. 0x80070035找不到网络路径
  4. python中super()
  5. DP-Fibonacci
  6. numpy 读取数据
  7. Identity 4 -1创建一个登录中心
  8. 第二阶段冲刺个人任务——six
  9. 实验一:通过Access划分vlan
  10. c#数字图像处理(八)图像平移