首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言實例練習

C語言練習實例83:0-7數字組成的奇數總個數計算

     編輯:C 語言實例練習

C語言練習實例83:0-7數字組成的奇數總個數計算

本實例計算使用數字 0-7 能組成多少個不重複數字的奇數(1 到 7 位數)。

組合邏輯

  • 個位必須為 1、3、5、7(4 種選擇)。
  • 最高位不能為 0。
  • 對於 k 位數(k≥2):個位 4 種,最高位從剩餘 6 個非零數字中選(若個位非零則剩 6 個非零,若個位為 0 則剩 7 個非零,但個位只能是 1,3,5,7 所以最高位總有 6 種選擇),中間 k-2 位從剩餘 6 個數字中排列。
  • 使用排列數公式 P(n, r) = n! / (n-r)! 計算。

源代碼

// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>

int factorial(int a, int b); /* 求排列數 P(a,b) */

int main() {
    int sum = 0, i;
    sum += 4; /* 一位數:1,3,5,7 共 4 個 */

    for (i = 2; i < 8; i++)
        sum += 4 * (factorial(7, i - 1) - factorial(6, i - 2));

    printf("可以組成%d個奇數\n", sum);
    return 0;
}

int factorial(int a, int b) {
    int i, sum = 1;
    if (b <= 0) return 1;
    for (i = 0; i < b; i++)
        sum *= (a - i);
    return sum;
}

運行結果

可以組成29692個奇數

說明

factorial(7, i-1) 表示從 7 個數字(去掉 0)中取 i-1 個排列(最高位及中間位),factorial(6, i-2) 扣除最高位為 0 的情況。乘以 4 為個位選擇數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved