首页 > 试题广场 >

[NOIP2013]记数问题

[编程题][NOIP2013]记数问题
  • 热度指数:12517 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
试计算在区间1 n 的所有整数中,数字x0 ≤ x ≤ 9)共出现了多少次?
例如,在111 中,即在1234567891011 中,数字1 出现了4 次。

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


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

输入

11 1

输出

4

备注:
对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
#include <stdio.h>

int main() 
{
    int n = 0;
    int x = 0;

    int count = 0;
    int i = 0;
    int tem = 0;

    scanf("%d%d", &n, &x);

    for(i = 0; i <= n; i++)
    {
        //取i的各个位,与n进行比较
        tem = i;
        while(tem)
        {
            if(tem % 10 == x)
            {
                count++;
            }
            tem /= 10;
        }
    }


    printf("%d\n", count);

    return 0;
}

编辑于 2024-04-02 22:27:28 回复(0)
#include <stdio.h>

int main() {
    int n, m;
    int count = 0;
    while (scanf("%d%d", &n, &m)==2) {
        if (m <= 9) {
            count++;
        }
        int i;
        for (i = 10; i <= n; i++) {
            int temp=i;
                while (temp) {
                    if (m == temp%10) {
                        count++;
                    }
                    temp /= 10;
                }
            }
    }
    printf("%d", count);
    return 0;
}
发表于 2024-03-21 20:17:54 回复(0)
#include <stdio.h>

int main()
{
    int n, x;
    int count = 0;
    scanf("%d %d", &n, &x);

    for (int i = 1; i <= n; i++)//每一次循环判断一个数,直到n为止
    {
        int a = i;
        while (a)//利用while循环判断每一位数字,直到a等于0,
        {
            if (a % 10 == x)//如果个位上的数字是x,count加一
                count++;
            a /= 10;//将个位上的数字去除,十位上的数字变成个位上的数字
        }
    }

    printf("%d", count);
    return 0;
}

编辑于 2024-02-28 09:26:10 回复(0)
#include <stdio.h>
void fun(int i, int x, int* p) {
    int a;
    while (i) {
        a = i % 10;
        i = i / 10;
        if (a == x) {
            (*p)++;
        }
    }
}
int main() {
    int n = 0, x = 0, count = 0;
    int arr[1000] = { 0 };
    scanf("%d %d", &n, &x);
    for (int i = 0; i <= n; i++) {
        arr[i] = i;
    }

    for (int i = 0; i <= n; i++) {
        fun(i, x, &count);
    }
    printf("%d", count);
    return 0;
}//看着唬人,其实很好理解
发表于 2023-12-28 13:38:24 回复(0)
#include <stdio.h>
int main()
{
    int n,x,count = 0;
    scanf("%d %d ",&n,&x);
    for(int i=1;i<=n;i++)
    {
        int m = i;//如果不用另一个变量替换i,i就会被小循环内的运算改变,影响大循环
        while(m)
        {
            if(m%10==x)
            {
                count++;
            }
            m /= 10;
        }
    }
    printf("%d",count);
    return 0;
}

发表于 2023-11-06 09:14:30 回复(0)
#include <stdio.h>
 
 
intmain() {
    intnum = 0;
    intF = 0;
    intloc = 1;
    intcnt = 0;
    scanf("%d%d", &num, &F);
    while(loc <= num) {
        intleft = num / loc / 10;
        intright = num % loc;
        intcur = num / loc % 10;
        if(F) {
            cnt += left * loc;
        }
        if(!F && left) {
            cnt += (left - 1) * loc;
        }
        if(cur > F && (F || left)) {
            cnt += loc;
        }
        if(cur == F && (F || left)) {
            cnt += right + 1;
        }
        loc *= 10;
    }
    printf("%d", cnt);
}
为啥要这么写的呀?是有什么高深的方法吗?
发表于 2023-08-18 23:20:28 回复(0)
#include <stdio.h>

int main()
{
    int num,n;
    int count=0;
    scanf("%d %d",&num,&n);
    for(int j=0;j<=num;j++)
    {
        int val=j;
        while(val)
    {
       if(val==n)
       {
        count++;
       }
       if(val>=10&&val%10==n)
       {
         count++;
       }
       val/=10;
    }
    }
    printf("%d",count);
    return 0;
}
发表于 2023-04-07 17:24:28 回复(0)
#include <stdio.h>

int main()
{
    int n = 0,x = 0;
    scanf("%d%d",&n,&x);
    int count = 0;
    for(int i = 1;i<=n;i++)
    {
        int i2 = i;
        while(i2)
        {
            if(i2%10==x)
                count++;
            i2/=10;
        }
    }
    printf("%d",count);
    return 0;
}


发表于 2023-03-14 08:40:44 回复(0)
#include <stdio.h>

int main() {
    int n, x, cnt = 0;
    while (scanf("%d %d", &n, &x) != EOF) {
        int tmp;
        for (int i = 1; i <= n; i++) {
            tmp = i;
            while (tmp) {
                if (tmp % 10 == x) {
                    cnt++;
                }
                tmp /= 10;
            }
        }

        printf("%d\n", cnt);
    }
    return 0;
}
发表于 2023-03-02 17:09:20 回复(0)
#include <stdio.h>

int main() {
    int n, x,count=0,b;
    while (scanf("%d %d\n", &n, &x) == 2) 
    {
        for(int i=1;i<=n;i++)
        {
            b=i;
            while(b)
            {
                if(b%10==x)
                {
                    count++;
                }
                b/=10;
            }
        }
        printf("%d\n",count);
    }
    return 0;
}

发表于 2022-11-12 17:27:40 回复(0)
#include<stdio.h>
int main()
{
    int n,x,cur;
    int count = 0;
    scanf("%d %d",&n,&x);
    for(int i = 1;i <= n;i++)
    {
        cur = i;
        while(cur)
        {
            if(x == cur % 10)
                count++;
            cur /= 10;
        }
    }
    printf("%d\n",count);
    return 0;
}

发表于 2022-07-28 23:22:26 回复(0)
#include <stdio.h>
int main()
{
    int n, x, a, c = 0;
    scanf("%d %d", &n, &x);
    for(int i = 1; i <= n; i++)
    {
        a = i;
        while(a > 0)
        {
            if(a%10 == x)
                c++;
            a = a/10;
        }
    }
    printf("%d", c);
    return 0;
}

发表于 2022-06-30 10:53:43 回复(0)
哈希表
int main() {
    int hash[10] = {0}; //定义哈希表,范围0~9
    int n, x;
    scanf("%d %d", &n, &x);
    for (int i = 1; i <= n; i++) { //遍历区间
        int tem = i;
        while (tem) {      //计算
            hash[tem % 10]++;
            tem /= 10;
        }
    }
    printf("%d", hash[x]); //输出

}

发表于 2022-06-29 21:02:34 回复(0)
#include<stdio.h>
int main()
{
    int n , x , mid_var0 , mid_var1 , mid_var2 , sum = 0 ;
    scanf("%d %d",&n,&x);
    for(int i = 1 ; i <= n ; i++)
    {
        mid_var0 = i ;
        while(mid_var0 != 0)
        {
            mid_var1 = mid_var0 % 10 ;
            if(mid_var1 == x) sum++;
            mid_var0 /= 10 ;
        }
    }
    printf("%d",sum);
    return 0;
}

发表于 2022-06-23 20:11:33 回复(0)
#include <stdio.h>

void Judge(int i, int b, int* count){
    while(i > 0){
        if(i % 10 == b)
            *count += 1;
        i /= 10;
    }
 }   
int main(){
    int a, b;
    int count = 0;
    scanf("%d %d", &a, &b);
    for(int i = 1; i <= a; i++){
        Judge(i, b, &count);
    }
    printf("%d", count);
    return 0;

}

发表于 2022-05-27 17:11:10 回复(0)
#include <stdio.h>

int main()
{
    int n = 0;
    int x = 0;
    int count = 0;
    scanf("%d %d", &n, &x);
    for(int i=1; i<=n; i++)
    {
        for(int j=i; j>0; j/=10)
        {
            
            if(j%10 == x)
            {
                count++;
            }
        }
    }
    printf("%d\n", count);
    return 0;
}

发表于 2022-05-22 23:25:07 回复(0)
int main()
{
    int a,b,c,count,t;
    scanf("%d%d",&a,&b);
    for(c=1;c<=a;c++)
    {
        int j=c;
        while(j>0)
        {
            t=j%10;      
            if(t==b)count++;
            j/=10;    
        }
    }
    printf("%d",count);

发表于 2022-05-22 20:09:34 回复(0)
#include<stdio.h>
int main()
{
    int n = 0;
    int x = 0; 
    int i = 0;
    scanf("%d %d",&n,&x);
    int count = 0;
    for(i = 1;i<=n;i++)
    {
        int tmp = i;
        while(tmp)
        {
            if(tmp%10 == x)
            count++;
            tmp = tmp/10;
        }
    }
    printf("%d",count);
    return 0;
}

发表于 2022-04-26 15:13:08 回复(0)