题目:
输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。效率尽可能高。
例如:
f(2)=1
f(12)=5
f(20)=12
f(115)=44
解决方案:
最简单的方法是从1到n循环处理,计算每个数中1的个数,累加起来。这个效率很低。
第二种方法是累加从1到n的所有数的个位十位百位等等上面1的个数,对于32位整数运算次数不超过10次。
int n...
分类:
其他好文 时间:
2014-05-18 04:41:55
阅读次数:
197
机器字长:是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度。现在一般为32位即4个字节,也有64位和16位的。
算术类型的存储空间按照机器而定。一般,short类型为半个机器字长,int为一个机...
分类:
编程语言 时间:
2014-05-17 15:01:22
阅读次数:
321
Java虚拟机提供几种进行整数算术运算的操作码,他们执行基于int和long类型的运算。当byte、short和char类型值参与算术运算时,首先会将它们转换为int类型。这些操作码都不会抛出异常,溢出在这里通常可以被忽略。整数加法操作码操作数说明iadd(无)从栈中弹出两个int类型数,相加,然后...
分类:
编程语言 时间:
2014-05-14 23:36:57
阅读次数:
386