首页 > 学院 > 开发设计 > 正文

51Nod 1009 数字1的数量 (数学

2019-11-14 10:05:14
字体:
来源:转载
供稿:网友

1009 数字1的数量

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度: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

直接上结论。

一个数的一个位数如果是0,则1的个数为这个数的高位*位数如果是1则是这个数的低位再加一加上高位*位数大于1则是(高位+1)*位数

#include<stdio.h>#define LL long longint main(){ int n; while(~scanf("%d",&n)) { int i = 1; LL k = 0; while(n >= i) { k += n/(10*i) * i; if((n/i%10) > 1) { k += i; } if((n/i%10) == 1) { k += n%i + 1; } i *= 10; } PRintf("%lld/n",k); }return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表