6 条题解

  • 6
    @ 2023-11-30 21:19:56

    用数组去接收数字,数组下标代表每个个位数字,用数组的值代表每个数字出现的个数(来自csdn) #include <stdio.h> int main( ) { int i,M,N,b; int a[10]={0}; scanf("%d %d",&M,&N); for(i=M,i<=N;i++) { int num=i;//用变量num去代表i,不然进入while后i的值最终会变成0; while(num>0) { b=num%10; num/=10; a[b]++; } } for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }

    • 4
      @ 2023-10-13 23:45:22

      #include <stdio.h>

      int main() { int number[10]={0};

      int m,n,k;
      scanf("%d %d",&m,&n);
      int num=m;
      for(k=1;k<=n-m+1;k++){
      	while(num!=0){
      		number[num%10]++;
      		num/=10;
      	}
      	num=m+k;
      }
       for(int p=0;p<=9;p++){
       	printf("%d ",number[p]);
       }
      
      
      return 0;
      

      }

      • 2
        @ 2024-10-12 0:58:48

        我这个更好理解一些,不过写的话还是按照下面曹操学长写的

        #include <stdio.h>

        int main () {

        int m, n;

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

        int a[10] = {0};

        for (int i = m; i <= n; i++) {

        int k = i;

        while (k > 0) {

        int b = k % 10;

        if (b == 0) {

        a[0]++;

        } else if (b == 1) {

        a[1]++;

        } else if (b == 2) {

        a[2]++;

        } else if (b == 3) {

        a[3]++;

        } else if (b == 4) {

        a[4]++;

        } else if (b == 5) {

        a[5]++;

        } else if (b == 6) {

        a[6]++;

        } else if (b == 7) {

        a[7]++;

        } else if (b == 8) {

        a[8]++;

        } else if (b == 9) {

        a[9]++;

        }

        k /= 10;

        }

        }

        for (int k = 0; k <= 9; k++) {

        printf("%d ", a[k]);

        }

        return 0;

        }

        • 1
          @ 2025-11-26 15:05:36
          #include <stdio.h>
          int main(){
              int a,b,c,d[10]={0},e;
              scanf("%d %d",&a,&b);
              for(int i=a;i<=b;i++){
                  int temp=i;
                  while(temp!=0){
                  c=temp%10;
                  for(e=0;e<10;e++){
                      if(c==e)d[e]++;
                  }
                  temp/=10;
                  }
              }
              for(int i=0;i<10;i++){
                  printf("%d ",d[i]);
              }
          }
          
          • 0
            @ 2025-9-18 22:22:33

            直接暴力,不会 数位 dp 的我太菜了😭

            from math import sqrt,ceil,gcd,log;re=lambda:map(int,input().strip().split())
            a = [0] * 10
            m, n = re()
            for i in range(m, n + 1):
                i = str(i)
                for j in i:
                    j = int(j)
                    a[j] += 1
            print(*a)
            
            • 0
              @ 2025-1-5 11:59:14
              #include<stdio.h>
              #include<iostream>
              const int N=10;
              int f[N];
              using namespace std;
              int main()
              {
              int m,n;
              cin>>m>>n;
              for(int i=m;i<=n;i++)
              {
              while(i>0)
              {
              int t=i%10;
              f[t]++;
              i=i/10;
              }
              }
              for(int i=0;i<10;i++)
              {
              cout<<f[i]<<" ";	
              }
              return 0;
              }
              错误在于我用i直接去操作,你应该赋值一个临时变量去操作,在循环次数的控制上应该用N-M这个条件,这个题这样写侥幸ac,请看下面ALEX大佬写的控制条件🚀️
              
              • 1

              信息

              ID
              101
              时间
              1000ms
              内存
              256MiB
              难度
              4
              标签
              (无)
              递交数
              608
              已通过
              282
              上传者