UVa 1225 - Digit Counting - ACM/ICPC Danang 2007 解题报告 - C语言
2024-10-09 16:49:38
1.题目大意
把前n$(n\le 10000)$个整数顺次写在一起:12345678910111213……计算0~9各出现了多少次。
2.思路
第一想法是打表,然而觉得稍微有点暴力。不过暂时没有想到更好的办法了,写完看了一下其它人的思路好像也差不多是打表的思路。
3.应注意的问题
(1)首先是格式问题,我第一次提交的时候PE了,因为没有意识到空格也会有影响。最开始我的最后一段代码是:
for(i=0;i<10;i++)
printf("%d ",s[n][i]);
printf("\n");
但是事实证明应该写成:
for(i=0;i<9;i++)
printf("%d ",s[n][i]);
printf("%d",s[n][9]);
printf("\n");
(2)打表的时候容易忘记初始化的时候先清零一次。因此在以后用到打表的时候要注意这个问题。
4.代码
#include"stdio.h"
#include"string.h"
#define maxn 10001
int main()
{
int s[maxn][10];
int i,j,n,m,T;
memset(s,0,sizeof(s));//数组清零 易漏
for(i=1; i<maxn; i++)
{
m=i;
for(j=0; j<10; j++)
s[i][j]=s[i-1][j];
while(m>0)
{
s[i][m%10]++;
m/=10;
}
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=0; i<9; i++)
printf("%d ",s[n][i]);
printf("%d",s[n][9]);
printf("\n");
}
return 0;
}
参考书目:算法竞赛入门经典(第2版) 刘汝佳 编著
最新文章
- Java 序列化与反序列化
- java设计模式学习(-)
- [C]基本数据类型:整型(int)用法详解
- 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
- 转:dashboard的简明教程
- Cocoapods注意点
- signtool对EXE进行签名
- .Net 内存泄露
- Classes and Objects :类和对象(1)
- (原)opencv直线拟合fitLine
- UVA_埃及分数(Hard Version) UVA 12588
- 你学会UI设计了吗?
- netstat 的10个基本用法(转)
- properties配置文件读取操作总结【java笔记】
- Dubbo的全局Filter配置
- IDA Pro使用技巧
- Qt532.QString_填充字符
- requestsManager:didFailRequest:withError: Error Domain=com.albertodebortoli.goldraccoon Code=-1000 ";(null)"; UserInfo={message=Unknown error!}
- linux 守护进程 daemon
- 2015306 白皎 《网络攻防》Exp4 恶意代码分析