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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求0~7这8个数字所能组成的1~~8位的奇数的个数???相关的知识,希望对你有一定的参考价值。

必须是用C语言回答!!!!欢迎各位高手解答,非常感谢!!

/*测试通过,楼上的错了,只算了7位数字,而且复杂度高,奇数完全有规律,末位只能是1、3、5、7,把i8用上之后跟我下面的程序结果一样。*/

#include <stdio.h>
int P(int a, int b)

int num = 0;
int i;
if(b <= 0)
return num;

num = a - 1;//最高为只有a-1种可能,0要排除
//剩下的b-1位中每位有a种可能
for(i = 0; i < b - 1; i++)

num *= a;


return num;


void Test(int a, int b, int c, int d)

int num = 0, i, j;
if(a < 0 || a > 9) return ;
if(b < 0 || b > 9) return ;
if(c <= 0) c = 1;
if(d <= 0) d = 1;
if(c > d) return;

for(i = c; i <= d; i++)
//1到8位数
for(j = a; j <= b; j++)
//奇数末位必然是1,3,5,7中的一个
if(j % 2)

if(i == 1)//如果是1位数直接+1
num++;
else
num += P(8, i - 1);//从8个数中选出i - 1个作为i位数的前i-1位



printf("%d~%d这%d个数字所能组成的%d~~%d位的奇数的个数:%d\\n", a, b, b - a + 1, c, d, num);


int main(int argc, char** argv)

Test(0, 7, 1, 2);
return 0;
参考技术A /*
求0~7这8个数字所能组成的1~~8位的奇数的个数???
*/

#include<stdio.h>

void main()

int i1,i2,i3,i4,i5,i6,i7,i8,number,sum=0;
for(i1=0;i1<=7;i1++)
for(i2=0;i2<=7;i2++)
for(i3=0;i3<=7;i3++)
for(i4=0;i4<=7;i4++)
for(i5=0;i5<=7;i5++)
for(i6=0;i6<=7;i6++)
for(i7=0;i7<=7;i7++)

number=i1+10*i2+100*i3+1000*i4+10000*i5+100000*i6+1000000*i7;
if(number%2==1)
sum++;

printf("sum=%d",sum);
getchar();
参考技术B /*测试通过,楼上的错了,只算了7位数字,而且复杂度高,奇数完全有规律,末位只能是1、3、5、7,把i8用上之后跟我下面的程序结果一样。*/
#include
<stdio.h>
int
P(int
a,
int
b)

int
num
=
0;
int
i;
if(b
<=
0)
return
num;
num
=
a
-
1;//最高为只有a-1种可能,0要排除
//剩下的b-1位中每位有a种可能
for(i
=
0;
i
<
b
-
1;
i++)

num
*=
a;

return
num;

void
Test(int
a,
int
b,
int
c,
int
d)

int
num
=
0,
i,
j;
if(a
<
0
||
a
>
9)
return
;
if(b
<
0
||
b
>
9)
return
;
if(c
<=
0)
c
=
1;
if(d
<=
0)
d
=
1;
if(c
>
d)
return;
for(i
=
c;
i
<=
d;
i++)
//1到8位数
for(j
=
a;
j
<=
b;
j++)
//奇数末位必然是1,3,5,7中的一个
if(j
%
2)

if(i
==
1)//如果是1位数直接+1
num++;
else
num
+=
P(8,
i
-
1);//从8个数中选出i
-
1个作为i位数的前i-1位



printf("%d~%d这%d个数字所能组成的%d~~%d位的奇数的个数:%d\n",
a,
b,
b
-
a
+
1,
c,
d,
num);

int
main(int
argc,
char**
argv)

Test(0,
7,
1,
2);
return
0;

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这8个数字所能组成的1~~8位的奇数的个数???的主要内容,如果未能解决你的问题,请参考以下文章

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

JAVA编程问题:求0-7所能组成的奇数个数

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

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

《Java练习题》习题集五

Python每日一问34