博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ3286 UVA11038 How many 0's?【位运算】
阅读量:6599 次
发布时间:2019-06-24

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

Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 3580   Accepted: 1944

Description

A Benedict monk No.16 writes down the decimal representations of all natural numbers between and including m and nm ≤ n. How many 0's will he write down?

Input

Input consists of a sequence of lines. Each line contains two unsigned 32-bit integers m and nm ≤ n. The last line of input has the value of m negative and this line should not be processed.

Output

For each line of input print one line of output with one integer number giving the number of 0's written down by the monk.

Sample Input

10 11100 2000 5001234567890 23456789010 4294967295-1 -1

Sample Output

122929876543043825876150

Source

, 2006.5.27

问题链接:。

问题简述:输入无符号整数m和n,满足m<=n,计算m到n(包括m和n)之间各个数中包含多少个0。

问题分析:先分别计算0到m-1和0到n之间数的0个数,结果=0到n之间数的0个数-0到m-1之间数的0个数。计算0到n之间数的0个数时,先考虑1位数、2位数、......,在小于n的区间逐步统计。

程序说明:数组radix[]计算存放10进制的位权备用。函数countzero()用于统计0到n之间数的0个数。

参考链接:。

AC的C语言程序如下:

/* POJ3286 How many 0's? */#include 
typedef long long LL;#define MAXN 10LL radix[MAXN+1];void maketable(){ int i; radix[0] = 1; for(i=1; i<=MAXN; i++) radix[i] = radix[i-1] * 10;}LL countzero(LL n){ if(n < 0) return 0; LL sum = 1; int i = 1; while(radix[i] <= n) { LL digit, left, right; digit = n % radix[i] / radix[i - 1]; if (digit == 0) { left = n / radix[i]; right = n % radix[i - 1]; sum += (left - 1) * radix[i - 1] + right + 1; } else { left = n / radix[i]; sum += left * radix[i - 1]; } i++; } return sum;}int main(void){ maketable(); LL m, n; while(scanf("%lld%lld", &m, &n) != EOF) { if(m == -1 && n == -1) break; printf("%lld\n", countzero(n) - countzero(m-1)); } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7564351.html

你可能感兴趣的文章
Spring Cloud + Spring Boot + Mybatis + shiro + RestFul + 微服务
查看>>
Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
查看>>
建站心得之discuz门户程序相比ZBLOG具有哪些优势[图]
查看>>
迭代设计模式
查看>>
编程之美 测试赛 石头剪刀布
查看>>
签名问题
查看>>
如何解决Struts2程序报错:java.lang.ClassCastException
查看>>
LNMP搭建wordpress
查看>>
ASP.NET 中gridview 中的选择按钮取到所选行的关键字段
查看>>
软件开发各阶段交付物列表
查看>>
错误集合
查看>>
Easy-UI 1.3 datagrid 分页大小pageSize设置在IE浏览器的文档模式为9下无效 且页面出现异常...
查看>>
希捷硬盘校准日志分析
查看>>
RHEL6 64位ASM方式安装oracle 11gR2(一)
查看>>
2018-05-24 Linux学习
查看>>
《Python网络编程基础》笔记
查看>>
Oracle数据库之SQL语句练习
查看>>
ntp服务器的搭建
查看>>
我的友情链接
查看>>
sysstat 安装
查看>>