习题3_3 uva 1225 数数字

这题难点在于,你如何对于数字进行处理,从而得到它每位的数
就用 (%10 /10)大法! 特别好用!请记住哦
而我对于数据小的,比较喜欢打表,就是,把所以情况都整一遍啦

#include  <cstdio>
#include <cstring>
using namespace std;
int a[10][10005];
int main()
{
	int n;
	scanf("%d",&n); // a[][i] 数组表示1-i所有数 的 0-9分别的个数 
	for  (int i = 1; i < 10001; i++)
	{
		int k = i;
		while(k)
		{
			int h = k%10;  //%10
			a[h][i]++;
			k/=10;        // /10
		}
		for (int j = 0; j < 10; j++)
		 a[j][i]+=a[j][i-1];
	}
	while(n--)
	{
		int k;
		scanf("%d",&k);
		for (int i = 0; i < 10; i++)
		{   
			if(i!=9)
			printf("%d ",a[i][k]);
			else
			printf("%d\n",a[i][k]);
			
		}
	}
	
	return 0;
}
发布了55 篇原创文章 · 获赞 1 · 访问量 2648

猜你喜欢

转载自blog.csdn.net/qq_37548017/article/details/100553308