原题:

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.

Input
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.

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

Sample Input
2

3

13
Sample Output
0 1 1 1 0 0 0 0 0 0

1 6 2 2 1 1 1 1 1 1

大概意思:

把前n(n≤10000)个整数顺次写在一起:123456789101112…数一数0~9各出现多少次(输出10个整数,分别是0,1,…,9出现的次数)。

思路:

对于每一个N,访问1到N,对于每一个访问,把每个数各个位给存进一个数组,最后,输出这个数组。

AC代码:

#include<iostream>
#include<string.h>
using namespace std;int a[10];void f(int x)
{while(x){a[x%10]++;x/=10;}
}int main()
{int T;int N;cin>>T; while(T--){memset(a,0,sizeof(a));cin>>N;for(int i=1; i<=N; i++){f(i);}for(int i=0; i<=8; i++){cout<<a[i]<<" ";}cout<<a[9]<<endl;}return 0;
}

关键点:

1.最开始担心会不会超时,要不要优化一下,后来百度了一下:计算机一秒能运行5*10^8次计算。而这份代码,测试组数不多于20,每个N小于10000,即每个N的长度小于等于4位,所以可以近视看成20*10^4*4=8*10^5,远远小于10^8,所以,暴力解决就好。

2.memset(a,0,sizeof(a));  :用来把a清零,多组输出记得变量使用之前要清零。

3.留心最后的输出格式。一是要换行,二是每一行数组最后一个元素的后面不能有空格,在提交的这个OJ上面,如果有空格是会给PE的,因为他题目要求是:用空格分开数字。

4.我的博客会更新一篇打表法,比这个更加优化

Over.

数数字(UVa1225)相关推荐

  1. 15行代码AC——习题3-3 数数字 (UVa1225,Digit Counting)

    大意: 把n(n<=10000)个整数顺序写在一起,求0~9分别出现多少次 Sample Input 2 3 13 Sample Output 0 1 1 1 0 0 0 0 0 0 1 6 2 ...

  2. java数数字及while和do while 的使用,以及程序的调试与验证

    while的条件是在进入循环体之前判断的,执行完一轮循环之后,会再回到循环开始的地方再次判断条件,而不会在循环体中随时判断条件 1.while语句是当条件满足时不断的执行循环体内语句. 2.会提前判断 ...

  3. 【智力题】拿硬币(数数字)、游戏

    神奇的取模运算. 设计一种策略,保证自己 100% 能赢: 确定好自己的策略之后,每一次要视对方的行为而确定自己的拿取情况: 1. 什么是拿硬币(数数字)游戏? 拿硬币(数数字)是两个人玩的游戏,要求 ...

  4. 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解

    本文前面的部分讲的是博弈论简单理论与SG函数SG定理的一些理解,后面对小米OJ赛题做详细剖析,最后给出代码的详细解读. 目录 博弈论 P-Position与N-Position SG函数与SG定理 S ...

  5. 数数字(找规律+模拟)

    数数字 Description 统计一下 aaa ⋯ aaa * b(n 个 a × b) 的结果里面有多少个数字d,a,b,d均为一位数. 样例解释: 3333333333*3=9999999999 ...

  6. 51nod 1770数数字(找规律)

    1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题 收藏 关注 统计一下 aaa ⋯ aaa n个a × b 的结果里面有多少个数字d,a,b,d均为 ...

  7. 分子量(Molar Mass)数数字(Digit)||UVa 1586,1225

    两个题目均取自UVa,分别为UVa 1586和UVa 1225. 分子量 给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4中原子,分别为C, H, O, N,分子量分别为12.01, ...

  8. 将任意一个十进制数数字转换为二进制形式,并输出转换后的结果

    package com.llh.demo; import java.util.Scanner; /**  *   * @author llh  *  */ public class Demo13 { ...

  9. 算法入门竞赛习题3-3:数数字(Digit Counting) 把前n(n≤10000)个整数顺次写在一起:123456789101112…数一数0~9各出现多少次。

    算法入门竞赛习题 习题3-3:数数字(Digit Counting) 把前n(n≤10000)个整数顺次写在一起:123456789101112-数一数0-9各出现多少次 (输出10个整数,分别是0, ...

  10. 习题3-3 数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)

    前n(n≤10000)个整数顺次写在一起:123456789101112-数一数0-9各出现多少次 (输出10个整数,分别是0,1,-,9出现的次数). 原题链接:https://vjudge.net ...

最新文章

  1. 在你的Fckeditor安装Google map plugin
  2. 基于Redis优化首页轮播图查询
  3. Ubuntu安装Navicat正版永久使用方法
  4. Java—stream以及集合框架使用
  5. 常见位操作:获取,设置,清零
  6. 解决方案_环网柜监测解决方案
  7. Tomcat Connector
  8. 95-190-540-源码-window-清除器(Evictors)-TimeEvitor简介
  9. 上传相关js和jquery对象
  10. 对android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的理解...
  11. 告别求职难!一汽-大众专场直播招聘来了
  12. jenkins修改任务工作目录
  13. 在 Ubuntu 中使用 GDebi 快速安装 DEB 包
  14. Visual Studio 2019报错:缺少mfc120.dll
  15. Steam游戏上架五:U3D连接Steamworks SDK制作成就系统
  16. git中将多次commit合并为一次commit
  17. matlab世界坐标系转化,坐标变换_世界坐标系与用户坐标系之间的转换
  18. 使用快捷指令和carplay发送停车位置(高德地图)
  19. 5个免费商用音频素材网站
  20. python信号处理加汉明窗_SciPyTutorial-非整周期信号加窗

热门文章

  1. 区块链量化投资系列课程(3)
  2. subfinder子域名发现工具
  3. 知识共享许可 cc 协议
  4. 模型的“参数”与“超参数”
  5. 微信小程序 - 实现车牌输入功能,自定义车牌号输入法组件(键盘弹出后输入车牌号,可自定义各地区及界面样式)超详细注释组件插件示例源码
  6. 转录组表达量计RPKM、FPKM、TPM说明
  7. GSM6.10转码与wav文件保存
  8. 跳转页面下载文件需要附带Token请求头,如何实现ajax下载?
  9. ubuntu:防火墙配置详细讲解(全)
  10. 青少年python一级考试试题,青少年python一级考试