洛谷P1179 【数字统计】
2024-10-20 09:50:35
题目传送门
此题题意十分明确:就是让我们统计在[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;
}
最新文章
- 使用iframe实现图片上传预览效果
- 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/.
- 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量
- [CareerCup] 13.2 Compare Hash Table and STL Map 比较哈希表和Map
- java 宠物商店代码
- Ajax-(get/post/jQuery方式请求)
- struts1标签-<;html:radio>; 使用注意事项
- MemCache缓存和C#自带的Cache缓存
- Prolog学习:基本概念 and Asp.net与Dojo交互:仪器仪表实现
- hdu_1728_逃离迷宫(bfs)
- 学习生命周期activity
- ES6新特性 Class的实现
- 数据库 用SQL语句操作数据
- .Net Core 学习之路-基础
- VS调试提示“无法启动程序,“...exe”。系统找不到指定文件
- .NET控件集ComponentOne 2018V3发布:新增图表动画及迷你图
- numpy.ndarray的赋值操作
- Tomcat启动就执行特定方法
- oracle 之 控制oracle RAC 进行并行运算
- 删除元素(LintCode)