2013NOIP普级组第一题--计数问题(参考洛谷题解)

来源:互联网 发布:linux显示文本名 编辑:程序博客网 时间:2024/06/04 18:37

一、题目描述

试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1

到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。

输入输出格式

输入格式:

输入文件名为 count.in。

输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。

输出格式:

输出文件名为 count.out。

输出共 1 行,包含一个整数,表示 x 出现的次数。

输入输出样例

输入样例#1: 复制
11 1
输出样例#1: 复制
4




说明

对于 100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。

二、解题思路

本方法的思路在于对1到n的每一个数进行判断,一位以上的数逐位判断,累加结果即可。

三、参考代码

#include<iostream>

using namespace std;

long js(int n,int x)//定义函数,判断每一位中出现数字的个数

{

    int i,j;

    long s=0;//初始计数器的值

    for(i=1;i<=n;i++)//进行循环

    {

    j=i; //j是判断位数的一个计数器

        while(j>0)//如果位数不为0,即该位有数,进行循环,若该位为0,及时停止循环,跳到下一个数

        {

            if(j%10==x)//如果取余后等于x,判断个数的计数器+1

            {

                s++;

            }

            j=j/10;//把j除以10,到下一位后继续循环

        }

    }

    return s;//返回计数器的值

}

int main()//进入主函数

{

    int t,c;

    long r;//主函数里的计数器

    cin>>t>>c;

    r=js(t,c);//用函数进行判断

    cout<<r<<endl;//输出计数器

    return 0;

}


阅读全文
0 0
原创粉丝点击