博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数字1的数量
阅读量:7078 次
发布时间:2019-06-28

本文共 523 字,大约阅读时间需要 1 分钟。

给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。
 
例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。
Input
输入N(1 <= N <= 10^9)
Output
输出包含1的个数
Input示例
12
Output示例
5
注意数据规模,只好找规律了。
代码实现:
1 #include
2 int n,a=1,ans; 3 int main(){ 4 scanf("%d",&n); 5 while(n>=a){ 6 ans+=n/(10*a)*a; 7 if(n/a%10>1) ans+=a; 8 if(n/a%10==1) ans+=n%a+1; 9 a*=10;10 }11 printf("%d\n",ans);12 return 0;13 }

有人说是数位DP什么的。

题目来源:51Nod

转载于:https://www.cnblogs.com/J-william/p/6363356.html

你可能感兴趣的文章
hausaufgabe--python 31 - Pickle
查看>>
流程控制--while
查看>>
max() min()
查看>>
python print 控制台输出中文
查看>>
[C++] Deep copy ,Shallow copy, copy constructor,"="
查看>>
render httprequest
查看>>
lsattr, chattr
查看>>
redis key设置过期时间
查看>>
0514JS基础:操作document对象、事件、this
查看>>
Gtest:源码解析
查看>>
【杂题总汇】HDU2018多校赛第九场 Rikka with Nash Equilibrium
查看>>
获取FIle路径下所有文件的地址和名称
查看>>
11.HTML表单元素【中】
查看>>
浙大版《C语言程序设计(第3版)》题目集 练习3-4 统计字符 (15 分)
查看>>
oracle创建计划任务
查看>>
16进制转10进制
查看>>
windows 安装服务
查看>>
MySQL常用简单小命令
查看>>
ERROR: child process failed, exited with error number 100 mongodb报错
查看>>
epoll 使用小结
查看>>