运行超时,不知道怎么改算法


#include<stdio.h>
int main()
{
    int count[10] = {0},t,n,i,j;
    scanf("%d",&n);
    for(j = 1;j <= n;j++)
  {
        i = j;
    do{
        t = i%10;
        count[t]++;//记得数组一定要初始化
        i /= 10;
    }while(i > 0);
  }
    for(i = 0;i < 10;i++)
        printf("%d\n",count[i]);
    
    return 0;
} 

题号:NC15327牛客竞赛,
链接:https://ac.nowcoder.com/acm/problem/15327
来源:牛客网

把题目发出来,不要发链接,需要注册

为了答这个题我还专门注册。。


#include<iostream>
using namespace std;
int main()
{
int n;
int a[10]={0};
cin>>n;
for(int i=n;i>0;i--)
{
  int j=i;
  while(j!=0)
  {
  a[j%10]+=1;
  j/=10;
  }
}
for(int i=0;i<10;i++)
    {
    cout<<a[i]<<endl;
    }
}

img

供参考:https://www.jlqwer.com/posts/4913.html