UVA 1225 Digit Counting

46 篇文章 1 订阅

题目描述:

Trung is bored with his mathematics homeworks.
He takes a piece of chalk and starts writing a sequence of consecutive integers starting with 1 to N (1 < N < 10000).
After that, he counts the number of times each digit (0 to 9) appears in the sequence. For example, with N = 13, the sequence is: 12345678910111213

In this sequence, 0 appears once, 1 appears 6 times, 2 appears 2 times, 3 appears 3 times, and each digit from 4 to 9 appears once. After playing for a while, Trung gets bored again.
He now wants to write a program to do this for him. Your task is to help him with writing this program.

输入格式:

The input file consists of several data sets. The first line of the input file contains the number of data sets which is a positive integer and is not bigger than 20. The following lines describe the data sets.
For each test case, there is one single line containing the number N.

输出格式:

For each test case, write sequentially in one line the number of digit 0, 1, . . . 9 separated by a space.

输入输出样例:

输入

2
3
13

输出

0 1 1 1 0 0 0 0 0 0
1 6 2 2 1 1 1 1 1 1

坑点提示:

输出时行末不能有空格!!!
害得我交了好多次

分析:

此题是让我们求1…n组成的字符串中0,1,2,3…9 一共出现了多少次。所以我们可以设一个a数组,用来存放0…9出现的次数。每次从一开始枚举,枚举到的i用下面这个程序求出它的各位数字是多少:

int s=i;
			
while(s>0)
{
	a[s%10]++;
				
	s/=10;
}

最后我们直接输出0…9出现的次数就行啦~
(记得清零哦)

代码:

#include<bits/stdc++.h>

using namespace std;

int T;

int n;

int a[20];

int main()
{
	cin>>T;
	
	while(T--)
	{
		cin>>n;
		
		memset(a,0,sizeof(a));//清空数组
		
		for(int i=1;i<=n;i++)
		{
			int s=i;
			
			while(s>0)
			{
				a[s%10]++;
				
				s/=10;
			}
		}	
		
		for(int i=0;i<=9;i++)
		{
			cout<<a[i];
			
			if(i<9)
			{
				cout<<" ";//当i==9时不能输出空格
			}
		}
		
		cout<<endl;//换行
	}
	
	return 0;
}

结束啦~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

harmis_yz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值