nod_1009 数字1的数量(分析题)
2024-09-12 06:06:19
题意:
给定一个十进制正整数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的个数
思路:
假设十进制数N的位数是K。我们分别统计【1,N】中第1位、第2位,....,第K位是1的数的个数。然后相加。【【巧妙!】】
分类讨论。
代码:
int n; int main(){ cin >> n;
int w=(int)log10(n)+1;
ll ans=0;
rep(i,0,w-1){
int left, cur, right, tmp;
cur=w-i;
tmp=(int)pow(10,cur-1);
right=n%tmp;
left=n/tmp/10;
int curNum=n/tmp%10;
if(curNum<1){
ans+=((ll)left*tmp);
}
else if(curNum==1){
ans+=((ll)left*tmp+1+right);
}
else{
ans+=((ll)(left+1)*tmp);
}
}
print("%lld\n",ans); ret 0;
}
最新文章
- ReactiveCocoa源码拆分解析(六)
- ArcGIS Add-in插件开发从0到1及实际案例分享
- C#语言基础-类——string增加内容
- Intellij Idea中运行tomcat 报內存溢出 解决方案 火龙战士 火龙战士
- LeetCode(9) - Palindrome Number
- 本地环境phpStorm10+XDebug配置和断点调试
- ASP.NET MVC 搭建简单网站 --1.前端页面布局和基本样式实现
- hadoop ssh无密码登陆
- C# winform 递归选中TreeView子节点
- 【原创】bootstrap框架的学习 第七课 -[bootstrap表格]
- Redis源码阅读之主从复制——Slave视角
- 小白的Python之路 day2 列表、元组操作
- spring boot容器启动详解
- 接口测试工具-fiddler
- css自定义滚动条
- Mybatis源码分析
- [No000018B]写代码要用 Vim,因为越难入门的工具回报越大
- 【pyspider】关于匹配html的数据
- ps4 如何导出切片 单个图片
- C语言程序设计--字符串与指针及数组与指针