首页 > 代码库 > NYOJ 514 1的个数
NYOJ 514 1的个数
1的个数
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
- 给你两个数a和b,你的任务是计算出1在a和b之间出现的次数,比如说,如果a=1024,b=1032,那么a和b之间的数就是:1024 1025 1026 1027 1028 1029 1030 1031 1032则有10个1出现在这些数中。
- 输入
- 输入不会超过500行。每一行有两个数a和b,a和b的范围是0 <= a, b <= 100000000。输入两个0时程序结束,两个0不作为输入样例。
- 输出
- 对于每一对输入的a和b,输出一个数,代表1出现的个数。
- 样例输入
1 10 44 497 346 542 0 0
- 样例输出
2 185 40
十进制数中1的个数!
AC码:
#include<stdio.h> long long solve(long long x) { if(x<0) return 0; long long t=0,p=1,temp=x; while(x>0) { if(x%10==0) t+=x/10*p; else { if(x%10==1) { if(x==temp) t+=x/10*p+1; else t+=temp%p+1+x/10*p; } else t+=(x/10+1)*p; } x/=10; p*=10; } return t; } int main() { long long a,b,t; while(scanf("%lld%lld",&a,&b)&&(a+b)) { if(a<b) { t=a; a=b; b=t; } printf("%lld\n",solve(a)-solve(b-1)); } return 0; }
NYOJ 514 1的个数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。