1出现的次数
输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。原文
解题思路
个位
考虑将n的十进制的每一位单独拿出讨论,每一位的值记为weight。
以534为例,在从1增长到n的过程中,534的个位从0-9变化了53次,记为round。每一轮变化中,1在个位出现一次,所以一共出现了53次。
再来看weight的值。weight为4,大于0,说明第54轮变化是从0-4,1又出现了1次。我们记1出现的次数为count,所以:
count = round+1 = 53 + 1 = 54
如果此时weight为0(n=530),说明第54轮到0就停止了,那么:
count = round = 53
十位
从1到n,每增加10,十位的weight才会增加1,所以,一轮0-9周期内,1会出现10次。即rount*10。
再来看weight的值。当此时weight为3,大于1,说明第6轮出现了10次1,则:
count = round*10+10 = 5*10+10 = 60
如果此时weight的值等于0(n=504),说明第6轮到0就停止了,所以:
count = round*10+10 = 5*10 = 50
类推
534 = (个位1出现次数)+(十位1出现次数)+(百位1出现次数)=(53*1+1)+(5*10+10)+(0*100+100)= 214
金子分块
一块金子做为给雇员的工资,工作七天,每天都需要付工资,不能拖欠,也不能提前。至少要把金子分为多少块?每天如何付?原文
分为7份,把它分成3份,第一份占 1 /7,第二份占2/7,第三份占4/7。
解析
第一刀切上整条黄金的七分之一,第二刀切上整条黄金的七分之二,剩下的七分之四为一份。
第一天给他你七切好的那七分之一,第二天给他你切好的七分之二,让他返还你第一天付给他的那七分之一,第三天,给他他返还来的那七分之一,第四天,给他剩余地的七分之四,要回之前给他的那两块金条,第五天,将你要回的那七分之一的金条给他,第六天,要回七分之一,给他七分之二的那块,第七天,给他最后一块就完了。
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~