从0~7这八个数组成无重复的七位数,要求奇数占奇数位,有多少种排列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从0~7这八个数组成无重复的七位数,要求奇数占奇数位,有多少种排列相关的知识,希望对你有一定的参考价值。

有288中排列。
首先,七位数共有4个奇数位,0~7这八个数中共有4个奇数:1,3,5,7,所以从这四个奇数中选4个进行排列,也就是4个奇数的全排列,共有P(4,4)排列方式。
接着,因为要求奇数占奇数位,4个奇数只能占4个奇数位,所以偶数只能占偶数位。七位数中有3个偶数位,0~7这八个数中共有4个偶数:0,2,4,6,所以从这四个偶数中选4个进行排列,因为七位数的最高位为奇数位,所以不用考虑最高位是0的情况,所以共有P(4,3)种排列方式。
所以,符合要求的排列方式共有p(4,4)*p(4,3)=(4!)*(4!)/(3-1)!=288(种)。
所以,从0~7这八个数组成无重复的七位数,要求奇数占奇数位,有288中排列。
参考技术A 七位数,奇数位分别为1,3,5,7
而0-7的奇数分别为1,3,5,7
也就是四个数放在四个空
A(4,4)
然后放偶数位
偶数位为2,4,6
0-7中的偶数位0,2,4,6
先选出3个C(3,4)
然后组成排列A(3,3)
总数就是A(4,4)*C(3,4)*A(3,3)=576
参考技术B 这个问题理清思路后,就比较简单。
8个数字组成7位数,奇数1、3、5、7仅4个,就是简单的全排列。
与之相对应的偶数位排列方法就是0、2、4、6的选3排列。
于是,总的排列方法就是上述排列的乘积:
N=4!X (4!/ 2!)
=288(个)
参考技术C 别傻了啊,奇位占奇位不就是0246和1357 无序排列后相乘,,看问题高一点,这是学数学的基本点,需要什么,站高点想怎么得到需要的东西,连起来不就行了?

Python每日一问34

问:

基础题:

 

定义函数实现以下功能:求出 0-n 所能组成的奇数个数,
位数最多 n+1 (0<n<10),
比如键盘输入n=7,求出0-7所能组成的奇数个数

 

提高题:


有如下分数序列: 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13...
求出这个数列的前 N 项之和,N由键盘输入


答:

基础题:

定义函数实现以下功能:求出 0-n 所能组成的奇数个数,
位数最多 n+1 (0<n<10),
比如键盘输入n=7,求出0-7所能组成的奇数个数

 

# 判断 0-n 之间有几个奇数
def judge_odd_num(num):
    odd_num = []
    for i in range(1, num + 1):
        if i % 2 != 0:
            odd_num.append(i)

    return odd_num


def calc_odd_nums(num, odd_num_count):
    ‘‘‘
    当一个数的最后一位为奇数时,那么这个数一定为奇数;
    首位肯定不为0;
    从该数为1位数到该数为(n+1)位数开始统计奇数的个数:
    1.当只有一位数时,奇数个数为 0-n之间的奇数个数,此处以7为例,0-7之间有4个奇数;
    2.当该数为两位数时,奇数个数为4*7=28, 首位有7个数的可能性,个位只有4个奇数可选;
    3.当该数为三位数时,奇数个数为:4*8*7=224,首位仍然是7个数,十位可以是0-7的任意一个数,即8个数的可能性,个位依旧
    以此类推。。。
    :param num: 输入的数字n
    :param odd_num_count: 0-n之间的奇数个数
    ‘‘‘
    sum_odd_count = 0
    for i in range(1, num+1):
        if i == 1:
            odd_num_count = odd_num_count
        elif i == 2:
            first_place = num
            odd_num_count = odd_num_count * first_place
        if i > 2:
            odd_num_count *= num+1

        sum_odd_count += odd_num_count
        print(%d位数的奇数个数为%d % (i, odd_num_count))

    print(0-%s所能组成的奇数个数总和为:%d %(num, sum_odd_count))


if __name__ == __main__:
    decimal_places = int(input("请输入数字n(1<n<10):"))
    odd_num = judge_odd_num(decimal_places)
    odd_num_count = len(odd_num)
    calc_odd_nums(decimal_places, odd_num_count)

提高题:

有如下分数序列: 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13... 
求出这个数列的前 N 项之和,N由键盘输入

def sum_fraction(n):
    x, y, i, j = 1, 2, 0, 0
    while i < n:
        j += y/x
        x, y = y, x+y
        i += 1
    return j


n = eval(input(请输入:))
print(:.2f.format(sum_fraction(n)))

以上是关于从0~7这八个数组成无重复的七位数,要求奇数占奇数位,有多少种排列的主要内容,如果未能解决你的问题,请参考以下文章

求0—7所能组成的七位数奇数个数。数字不能重复。请问该怎么用C语言编

0到7组成无重复数字的五位数,有多少个奇数

求0-7所能组成的奇数个数。请编程实现

求0—7所能组成的奇数个数

求五位数是奇数的个数

求0~7这8个数字所能组成的1~~8位的奇数的个数???