首页 > 代码库 > NYOJ 648 数字1的数量
NYOJ 648 数字1的数量
数字1的数量
时间限制:1000 ms | 内存限制:65535 KB
难度:1
- 描述
- 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。
- 输入
- 输入N(0 <= N <= 10^9)
多组测试数据 - 输出
- 输出包含1的个数
- 样例输入
12
- 样例输出
5
同 点击打开链接
AC码:
#include<stdio.h> int fun(int n) { if(n<1) return 0; int sum=0,t=n,p=1; while(n>0) { if(n%10==0) sum+=n/10*p; else if(n%10==1) { if(n==t) sum+=n/10*p+1; else { sum+=n/10*p+t%p+1; } } else sum+=(n/10+1)*p; n/=10; p*=10; } return sum; } int main() { int n; while(~scanf("%d",&n)) { printf("%d\n",fun(n)); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。