3449: 统计页码

** 3449: 统计页码**

描述

一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2……9。

输入

输入数据有多组,每组数据一行,包括一个正整数N(N<=10000),表示总的页码。## 输出
如果二维数组中至少存在一行或一列,其元素之和为x,则输出YES,否则输出NO

输出

每组数据输出十行:每组的第k行为数字k-1的个数。

每组数据之后输出一个空行。

样例输入

11

样例输出

1
4
1
1
1
1
1
1
1
1

运行结果

代码片

输入的9999值
输入的11值


#include<stdio.h>
#define N 10000
int main()
{
  int i,j,a[5]={0},b[N][10]={{0,1},{0,1,1}},c=0,shu;
  for(i=3;i<=N;i++)
  {
	  	c=0;shu=i;
	   while(shu)
	   {
		   	a[c]=shu%10;
		   	shu/=10;
		   	c++;
	   }
	   for(j=0;j<c;j++)
	   {
		   	switch(a[j])
		   	{
			  case 0:b[i-1][0]++;break; 
			  case 1:b[i-1][1]++;break;
			  case 2:b[i-1][2]++;break;
			  case 3:b[i-1][3]++;break;
			  case 4:b[i-1][4]++;break;
			  case 5:b[i-1][5]++;break;
			  case 6:b[i-1][6]++;break;
			  case 7:b[i-1][7]++;break;
			  case 8:b[i-1][8]++;break;
			  case 9:b[i-1][9]++;break; 	
		    }
	   }
	   for(j=0;j<10;j++){b[i-1][j]+=b[i-2][j];}
  }
  	
	while(scanf("%d",&shu)!=EOF)
	{
		for(j=0;j<10;j++){printf("%d\n",b[shu-1][j]);}
   	   printf("\n");
	}
	
} 

先打表再输入数值,会减少代码时间资源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值