开始题目没看懂卡了一下 看懂题意后就差不多可以水出来 算是暴力枚举 害怕TLE 应该是数据给的很少 ac了
#include <stdio.h>
int main() {
int T;
scanf("%d", &T);
while (T--) {
int N, i, t, a[10] = {};
scanf("%d", &N);
for (i = 1; i <= N; i++) {
t = i;
while (t) a[t%10]++, t/=10;
}
for (i = 0; i < 9; i++) printf("%d ", a[i]);
printf("%d\n", a[9]);
}
return 0;
}
如果很多数据的话 ,就是用二维数组打表!
#include<iostream>
#include<cstring>
using namespace std;
int a[10001][10];
int main()
{
for(int i=1;i<=10000;i++)
{
for(int k=i;k;k/=10)
{
++a[i][k%10];
}
for(int k=0;k<=9;k++)
{
a[i][k]+=a[i-1][k];
}
}
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
for(int i=0;i<=8;i++)
cout<<a[n][i]<<" ";//看清题意数据间有空格
cout<<a[n][9]<<endl;/为了满足题意的换行,用的小技巧
}
}