首页 > 试题广场 >

[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。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int x = in.nextInt();
            int count = 0;
            for (int i = 1; i <= n; i++) {
                count += sumX(String.valueOf(i), String.valueOf(x));
            }
            System.out.println(count);
        }
    }
    static int sumX(String i, String x ) {
        int sum = 0;
        Pattern p = Pattern.compile(x);
        Matcher m = p.matcher(i);
        while (m.find()) {
            sum++;
        }
        return sum;
    }
}

发表于 2024-03-01 22:06:44 回复(0)
import java.util.Scanner;
import java.util.ArrayList;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int x = in.nextInt();
            ArrayList<Integer> array=new ArrayList<Integer>();
            String s=null;
            String sx=String.valueOf(x);
            int count=0;
            for(int i=1;i<=n;i++){
                array.add(i);
                s=String.valueOf(array.get(i-1));
                for(int j=0;j<s.length();j++){
                    String sa=String.valueOf(s.charAt(j));
                    if(sa.equals(sx)){
                        count++;
                    }
                }
            }
            System.out.println(count);
            
        }
    }
}

发表于 2022-11-11 21:58:10 回复(0)
我觉得用不着数组
import java.util.Scanner ;
public class Main{
    public void Sum(int l ,int r ,int x ){
        int sum = 0 ;
        for(int i = l; i <= r ; i ++){
            int temp = i ;
            while(temp != 0){
                if(temp % 10 == x ){
                    sum ++ ;
                } 
                temp /= 10 ;
            }
        }
        System.out.println(sum);
    }
    
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in) ;
        int n = scanner.nextInt();
        int x = scanner.nextInt();
        Main man = new Main() ;
        man.Sum(1 , n , x ) ;
    }
}


发表于 2022-08-17 09:29:57 回复(0)
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(),x=sc.nextInt();
        int count=0;
        for(int i=1;i<=n;i++)
            count+=total(i,x);
        System.out.println(count);
    }
    public static int total(int i,int x){
        int sum=0;
        while(i!=0){
            if(i%10==x) sum++;
            i/=10;
        }
        return sum;
    }
}

发表于 2022-08-09 21:29:42 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args)
    {
        int n=0;
        int x=0;
        int cnt=0;
        Scanner in=new Scanner(System.in);
        n=in.nextInt();
        x=in.nextInt();
        for(int i=1;i<=n;i++)
        {
            int temp=i;
            while(temp!=0)
            {
                if(temp%10==x) cnt++;
                temp/=10;
            }
        }
        System.out.println(cnt);
    }
}

发表于 2022-07-20 17:47:57 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        char x = sc.next().charAt(0);
        int count = 0;
        for (int i = 1; i <= n; i++) {
            String a = Integer.toString(i);
            for (int j = 0; j < a.length(); j++ ) {
                if(a.charAt(j)==x){
                    count++;
                };
            }
        }
        System.out.print(count);
    }
}

发表于 2022-07-11 10:20:50 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int n  = scanner.nextInt();
            int x = scanner.nextInt();
            int count = 0;
            String str = "";
            char c = Integer.toString(x).charAt(0);
            //创建数组放数,之后遍历,如果符合要求就+1
            String[] toArr = new String[n+1];
            for(int i = 1;i <= n;i++){
                str = i + "";
                for(int j = 0;j < str.length();j++){
                    if(str.charAt(j) == c){
                        count++;
                    }
                }
            }
            System.out.println(count);
        }
    }
}

发表于 2022-06-29 17:25:52 回复(0)

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int s1,s2,k,t,tot=0;
        Scanner sc = new Scanner(System.in);
             s1=sc.nextInt();
             s2=sc.nextInt();
            for (int i = 1; i <=s1; i++) {
                k=i;
                while (k != 0) {
                    t=k%10;
                    if (t==s2){
                        tot++;
                    }
                    k=k/10;
                }
            }
        System.out.println(tot);
    }
}


发表于 2022-03-04 21:33:27 回复(0)