本文已参与「新人创作礼」活动,一起开启掘金创作之路
称重问题
- 问题描述
有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?
- 解法一
第一次:2+7—>称9g盐
第二次:9+7—>称16g盐
第三次:16+7—>称25g盐
将3次称的放在一起为50g,剩下的就是90g
- 解法二
第一次:将140g盐平分在天平两边,一边各70g盐
第二次:将其中一份70g盐平分在天平两边,一边各35g盐
第三次:取其中一份35g盐,配出20g和15g盐,20+2<------>15+7
把15g盐和第二次另一份35g盐合到一起,凑成50g盐;把20g盐和第一次另一份70g盐合到一起,凑成90g盐
- 解法三
第一次:将140g盐分为71g盐和69g盐加上2g砝码,71<—>69+2
第二次:利用2g、7g砝码配出5g盐,2+5<—>7
第三次:利用2g、7g砝码、5g盐配出14g盐,2+5+7<—>14
14+5+71=90,剩下的就是50g盐
污染药问题
你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1,只称量一次,如何判断哪个罐子的药被污染了?
解答思路
设未被污染的每个药丸的重量是x,则被污染的每个药丸的重量是x+1。将4个罐子分别标注为1,2、3、4,取一号罐子1个药丸,二号罐子2个药丸,三号罐子3个药丸,四号罐子4个药丸,一起称重
- 则:
若一号罐子药丸被污染,则重量为(10x+1)
若二号罐子药丸被污染,则重量为(10x+2)
若三号罐子药丸被污染,则重量为(10x+3)
若四号罐子药丸被污染,则重量为(10x+4)
位数问题
1000!有几位数,为什么?
解答思路
设一个数为X,用科学计数法表示为X=a*10^b,其中1<a<10,b为整数,则X有1+b位数
- 示例:
1995=1.995* 10^3,有1+3=4位数 56789=5.6789*10^4,有1+4=5位数。其中3,4是通过取对数的整数部分获得,lg(1995)的整数部分是3,lg(56789)的整数部分是4
求1000!有几位,此问题转化成求lg(1000!)+1的值
lg(1000!)=lg(1000*999…*1)=lg(1000)+lg(999)+…+lg(1)
#include <stdio.h>
#include <math.h>
int main()
{
double sum = 0.0;
for (int i = 1000; i >=1; i--)
{
sum += log10(i);
}
printf("%d\n", (int)sum+1);//2568
return 0;
}