制作不易,点赞,关注 支持一下!!!干货满满
一、编程题
1、由 1,3,4,5,7,8这六个数字所组成的六位数中,能被75整除的最大的数是多少?
由 1,3,4,5,7,8这六个数字所组成的六位数中,能被75整除的最大的数是多少?
from itertools import permutations
data=[1,3,4,5,7,8]#可用数字列表
max_num=None#初始化最大数为None
for perm in permutations(data):
num=int(''.join(map(str,perm)))#构造当前排列的6位数
if num%100==75:
if num%3==0:
if max_num is None or num > max_num:
max_num=num
print(max_num)#输出结果
2、丈夫吃醋---丈夫和妻子过河题
1) 对于 n=2 的情况
假设有两对夫妇,分别为夫妇A(男A,女A)和夫妇B(男B,女B)。
1:男A和男B过河,男A独自返回。此时,对岸有男B,此岸有女A、女B和男A。
2:男A带女A过河,男B独自返回。此时,对岸有男A和女A,此岸有男B和女B。
3:男B带女B过河。此时,所有夫妇都成功过河。因此,对于n=2的情况,他们可以通过三次过河成功完成任务。
2)对于 n=3 的情况
假设有三对夫妇,分别为夫妇A(男A,女A)夫妇B(男B,女B)和夫妇C(男C,女C)。
①男A和男B过河,男A独自返回。此时,对岸有男B,此岸有女A、女B、男A、男C和女C。
②男A带男C过河,男B独自返回。此时,对岸有男A、男C,此岸有女A、女B、男B和女C。
③男B带女B过河,男A独自返回。此时,对岸有男B、女B、男C,此岸有女A、男A和女C。
④男A带女A过河,男C独自返回。此时,对岸有男A、女A、男B、女B,此岸有男C和女C。
⑤男C带女C过河。此时,所有夫妇都成功过河。因此,对于n=3的情况,他们可以通过五次过河成功完成任务
3) 对于 n≥4 的情况
对于n对夫妇(n≥4)的情况,我们可以采用类似的策略,但关键在于确保在任何时候,都不会有丈夫单独留在一侧,同时他的妻子在另一侧与另一个男性在一起
首先,让n-1个丈夫(例如男A, 男B, ..., 男N-1)一起过河,然后其中一个(如男A)返回。
接着,返回的丈夫(男A)带上一个妻子(如女A)过河,然后另一个丈夫(如男B)返回。
重复这个过程,每次让一个丈夫带上一个之前未过河的妻子过河,然后留下一个已经过河但妻子还未过河的丈夫返回。
当所有妻子都过河后,最后剩下的两个丈夫(其中一个必然是最后一个带妻子过河的丈夫,他已经在对岸;另一个则是之前某个时刻返回的丈夫)可以一起过河
过河次数:
初始n-1个丈夫过河:1次
每个丈夫返回并带妻子过河(共n次):n次
最后一个丈夫(已在对岸)与最后一个返回的丈夫过河:1次
因此,总共需要 1+n+1=n+2 次过河。
综上所述,对于n≥4的情况,该问题有解,并且他们一共需要 n+2 次过河。
3、 上台阶问题
#include<stdio.h>
int main(){
int n;
printf("总有台阶数:");
scanft("%d",&n);
printf("总共有%d种方法:",sum(n));
retur