2013NOIP普及组真题 1. 计数问题

线上OJ:

一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid=1961

核心思想:

本来想找规律,后来发现本题的数据范围不大,n为 1 0 6 10^6 106,即使每一位都判断一次,最坏的情况下时间复杂度也仅为 O ( 7 ∗ 1 0 6 ) O(7*10^6) O(7∗106),故本题可以考虑直接枚举,不需要去找数字上的规律了。

题解代码:
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n, x, ans=0;

int main()
{
    cin >> n >> x;
    for(int i = 1; i <= n; i++)
    {
        int tmp = i;  // 这里需要用tmp代替i,因为i要++,i不能变
        while(tmp)  
        {
            if((tmp % 10) == x)  ans++;  // 如果最后一位是x,则ans++
            tmp = tmp / 10;    // 去除个位数字
        }
    }
    cout << ans << endl;
    return 0;
}
相关推荐
sali-tec25 分钟前
C# 基于halcon的视觉工作流-章32-线线测量
开发语言·人工智能·算法·计算机视觉·c#
起个名字费劲死了26 分钟前
手眼标定之已知同名点对,求解转换RT,备份记录
c++·数码相机·机器人·几何学·手眼标定
雅雅姐28 分钟前
C++中的单例模式的实现
c++
lingran__34 分钟前
速通ACM省铜第一天 赋源码(The Cunning Seller (hard version))
c++·算法
塔中妖42 分钟前
【华为OD】数字游戏
算法·游戏·华为od
pzx_0011 小时前
【LeetCode】392.判断子序列
算法·leetcode·职场和发展
沐怡旸1 小时前
【算法--链表】146.LRU缓存--通俗讲解
算法·面试
沐怡旸1 小时前
【基础知识】仿函数与匿名函数对比
c++·面试
京东零售技术1 小时前
查收你的技术成长礼包
后端·算法·架构