当前位置: 首页 > news >正文

P1980 [NOIP2013 普及组] 计数问题

[NOIP2013 普及组] 计数问题

题目描述

试计算在区间 1 1 1 n n n 的所有整数中,数字 x x x 0 ≤ x ≤ 9 0\le x\le9 0x9)共出现了多少次?例如,在 1 1 1 11 11 11 中,即在 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 1,2,3,4,5,6,7,8,9,10,11 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 1 1 出现了 4 4 4 次。

输入格式

2 2 2 个整数 n , x n,x n,x,之间用一个空格隔开。

输出格式

1 1 1 个整数,表示 x x x 出现的次数。

1.题目分析

该题有多种解法和思路,可以遍历1到n,对每个数字的个位,十位,千位,万位,十万位,判断是否为对应的整数。
也可以在遍历的过程中定义一个临时字符数组,直接判断每一个元素,从而得到出现的次数。
总的来说,各有千秋,第一种空间复杂度较低,第二种时间复杂度较低。

2.题目思路

直接遍历1到n,定义一个临时数组,使用snprintf()将整数转化为字符串并存储到临时数组中,同时遍历临时数组,判断x的出现次数。循环结束,打印结果即可。

3.代码实现

#include <stdio.h>
#include <string.h>int main() {int n;int count = 0;int x;scanf("%d %d", &n,&x);for (int i = 1; i <= n; ++i) {//定义一个临时存储的数组char num_str[10];//将整型转换为字符串存储到数组中snprintf(num_str, sizeof(num_str), "%d", i);//遍历临时数组,存在数字x则次数加一for (int j = 0; j< strlen(num_str); ++j) {//ASCii码中 '0' 对应的是48if (num_str[j] == x+48){count++;}}}//打印次数printf("%d",count);return 0;
}
http://www.lryc.cn/news/98192.html

相关文章:

  • 需求管理全过程流程图及各阶段核心关注点详解
  • Android开源 自定义emoji键盘,EmojiPack v2.1版本
  • SOLIDWORKS软件的优势分析 硕迪科技
  • Android性能优化之游戏的Theme背景图
  • 网络安全(黑客)系统自学,成为一名白帽黑客
  • lua学习-2 常见运算符
  • 【图像处理】使用 OpenCV 将您的照片变成卡通
  • 暖手宝UL认证 亚马逊UL测试报告 UL499测试项目
  • ES6模块化与异步编程高级用法
  • spring-cloud-starter-gateway 4.0.6负载均衡失败
  • Tomcat注册为Windows服务
  • 【Maven】Maven 中 pom.xml 文件
  • 2、Linux驱动开发:模块_引用符号
  • Python web实战 | Docker+Nginx部署python Django Web项目详细步骤【干货】
  • 【uniapp】实现买定离手小游戏
  • 【vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容】
  • webpack联邦模块介绍及在dumi中使用问题整理
  • 记录一下Kotlin: Module was compiled with an incompatible version of Kotlin.的问题
  • html中使用Vue+element UI动态创建表单数据不显示问题
  • CentOS下 Docker、Docker Compose 的安装教程
  • [OnWork.Tools]系列 02-安装
  • 【外键合并python】
  • Mongodb SQL 到聚合映射快速参考
  • 腾讯云标准型S6/SA3/SR1/S5/SA2服务器CPU处理器大全
  • idea 关于高亮显示与选中字符串相同的内容
  • 【重点:单例模式】特殊类设计
  • 智能家居是否可与ChatGPT深度融合?
  • LED芯片 VAS1260IB05E 带内部开关LED驱动器 汽车硬灯带灯条解决方案
  • 微信小程序插件 painter 生成海报、二维码
  • Python版day60