笔试面试杂项

目录

1.1升无刻度盒子

2.脑筋急转弯:三个开关三个灯 

3.400米环形跑道_顺逆时针来回跑问题

4.一天24小时内,钟表的时针、分针、秒针会重合几次?2次

4.2钟表的时针、分针会重合几次?22次

5.大于6的连续三个整数,其中两个是质数,另一个一定可以被6整除

5.1.判断一个数是否为质数

5.2判断两个数是否互质

5.3求两个数的最大公约数


1.1升无刻度盒子

有一个没有刻度的长方形的塑料盒子,没有盖子,它的容积是1升。请问如果只能使用这个盒子称量一次,能够准

确地量出多少升的水?
A.0.4升
B.0.5升
C.0.8升
D.0.3升

如果只能使用这个盒子称量一次,能够准,确地量出0.5升的水

2.脑筋急转弯:三个开关三个灯 

增加信息,熵增!

先打开第一个开关,开几分钟,然后再开第二个开关,这个时候可以进屋了,现在所看见正在亮着的灯,很明显是第二开关控制的,然后用手摸一下另外两个灯,有热度的,就是第二个开关控制的,剩下的当然就第三个开关控制的。

3.400米环形跑道_顺逆时针来回跑问题

李明在四百米长的环形跑道上练习长跑.上午八点二十分开始,李明按逆时针方向出发,一分钟后,李明调头按顺时针方向跑,又过了两分钟,李明又调头按逆时针方向跑.如此,按1、2、3、4……分钟掉头往回跑.当李明按逆时针方向跑到起点,又恰好该往回跑时,他在练习正好停止.如果李明每分钟跑120米,那么它停止练习时是几点几分?他一共跑了多少米?

[120,400]=1200 ,[120与400]的最小公倍数是1200
1200÷120=10(次) 
1+2+3+……+19=190(分钟) 
120×190=22800(米)

4.一天24小时内,钟表的时针、分针、秒针会重合几次?2次

一天24小时内,钟表的时针、分针、秒针会重合几次?

只有两次。
假设时针的角速度是ω(ω=2π/12小时=π/6小时),则分针的角速度为12ω(12ω=2π/60分钟),秒针的角速度为72ω(72ω=2π/60秒)。 
假设分针与时针再次重合的时间为t,则有12ωt-ωt=2π,t=12/11小时,换算成时分秒为1小时5分27.3秒,显然秒针不与时针分针重合,同样可以算出其它10次分针与时针重合时秒针都不能与它们重合。只有在正12点和0点时才会重合。

4.2钟表的时针、分针会重合几次?22次

一共22次

由于时针1分钟旋转的圆心角度数为0.5度,分针1分钟旋转的圆心角度为6度,
当两针第一次重合时后到第二次重合,
分针比时针多旋转过的圆心角度数为360度,所以两针再次重合需要的时间为:
t=65+5/11 分,

这类问题实际上是分针追时针的追击问题,它的公式是:
t= s/(v1-v2) ,S=60(格)
分针速度:V1=1 格/分,
时针速度:
V2= 1/12 格/分,
所以,计算得到t=65+5/11 分,
根据以上计算,每隔65+5/11 分时针和分针重合一次。
即,从12点开始,每经过65+5/11 分,时针与分针重合一次,
全天共重合22次

5.大于6的连续三个整数,其中两个是质数,另一个一定可以被6整除

连续的大于6的三个整数,其中两个为质数,求证,另一个可以被6整除。

用反证法:假设该命题不成立,则设其中的那个不能被6整除的数为6k+b其中,k为任意大于0的数,b为1,2,3,4,5的其中之一。因为三个数连续,所以可以通过6k+b将剩下的两个数表示出来,发现当b取1,2,3,4,5的任意值时,均不能满足题设条件(两个数为质数)。综上,必有一个可被6整除。

(质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。)

(证明:

一切自然数都可以表示成这样的形式2n-1,2n(n=1,2,3...);如果这个数不能被2整除,则它只能是2n-1,但2n-1两边必然是偶数,非质数,故而这个数必须被2整除;

同理一切自然数都可以表示成这样的形式3n-2,3n-1,3n(n=1,2,3...);如果这个数不能被3整除则这个数为3n-2或3n-1,这样它的两边一定有能被3整除的数(3n或3(n-1)),非质数,故而这个数也能被3整除;

以上两点建立于这个数大于或等于4,所以当这三个数都大于6时,必然要同时满足被2和被3整除(被6整除的充要条件);

证毕)

 

 

5.1.判断一个数是否为质数

/*
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
该算法的时间复杂度O(n)。
*/
bool isprime(int m)
{
	int i;
	for (i = 2; i < m; i++)//for(int i=2;i<=sqrt(m);i++
	{
		if (m % i == 0)
			return false;
		else
			return true;
	}
}

5.2判断两个数是否互质

// 只有1为公约数的两个正整数,两个整数才会互质
// 也就是说两个整数的最大公约数为1,即可判断两个正整数互质
bool isrp(int a, int b){
	if (a <= 0 || b <= 0 || a == b){ // 互质整数不能小于或等于0
		return false;
	}
	else if (a == 1 || b == 1){ // 两个正整数中,只有其中一个数值为1,两个正整数为互质数
		return true;
	}
	else{
		// 求出两个正整数的最大公约数,辗转相除法
		while (1){
			int t = a%b;
			if (t == 0)
			{
				break;
			}
			else
			{
				a = b;
				b = t;
			}
		}
		if (b > 1)
		{ // 如果最大公约数大于1,表示两个正整数不互质
			return false;
		}
		else
		{ // 如果最大公约数等于1,表示两个正整数互质
			return true;
		}
	}
}

5.3求两个数的最大公约数

/*
辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。
它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,
再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。
如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

*/
int GCD(int a, int b)
{
	return b == 0 ? a : GCD(b, a%b);
}


int gcd(int a, int b)
{
	// 求出两个正整数的最大公约数,辗转相除法
	while (1){
		int t = a%b;
		if (t == 0)
		{
			break;
		}
		else
		{
			a = b;
			b = t;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/m0_37357063/article/details/82715843