编写一个程序,输出总共5位数字,其中包含5个数字,但不包含8个数字

时间:2015-10-17 03:07:15

标签: c++ digit

我的挑战是输出数字为5的五位数的总数,但没有数字8.到目前为止我只有两个答案是0或90000.任何人都可以帮助我吗?

#include <iostream>
using namespace std;

int main() {
    int number;
    int counter=10000;
    int ncounter=0;
    while (counter >= 10000 && counter <= 99999) {
        int n1,n2,n3,n4,n5;
        counter = counter + 1;
        n1 = number%10;
        number /= 10;
        n2 = number%10;
        number /= 10;
        n3 = number%10;
        number /= 10;
        n4 = number%10;
        number /=10;
        n5 = number%10;
        number /= 10;
        if (n1 == 5||n2 == 5||n3 == 5||n4 == 5||n5 == 5)
            if (n1!=8)
                if (n2!=8)
                    if (n3!=8)
                        if(n4!=8)
                            if (n5!=8)
                                ncounter=ncounter+1;
    }
    cout<<ncounter<<endl;
    return 0;
}

3 个答案:

答案 0 :(得分:2)

(数字5但不是8)=(数字没有8) - (数字既不是8也不是5)= 8 * 9 * 9 * 9 * 9 - 7 * 8 * 8 * 8 * 8 = 23816

答案 1 :(得分:1)

每个数字都是5位数的选择(重复)。

由于你不能选择数字8,你有9个可能的数字,所以这个问题相当于同一个问题,基数为9(而不是基数为10)。

如果您将1位数设为5,则剩余4个非5位和非8位数字。这些数量可以计算为8^4(因为有8个可用数字可供选择,您需要选择其中4个)。使用单个5,有5种方法可以定位5,所以乘以5。

与2 5&s类似,有5种方法可以将5s相对于其他数字定位。

因此,我们有下表:

number of digits==5    remaining digits    ways to position 5s
1                      8^4                 5
2                      8^3                 10 = 5*4/2
3                      8^2                 10
4                      8^1                 5
5                      8^0                 1

5*8^4 + 10*8^3 + 10*8^2 + 5*8^1 + 8^0 = 26281个号码<10^55但不是8

4*8^3 + 6*8^2 + 4*8^1 + 8^0 = 2465个号码<10^45但不是8。因此,有23816个数字符合您的条件。

答案 2 :(得分:0)

这实际上是一个数学问题。这里我们有三个条件:

  1. 第一个数字不为零,因为它应该是一个五位数字。
  2. 没有数字是8
  3. 一个或多个数字为5
  4. 可以有一到五个5s的数字,其中第一个数字是或不是5(55555除外)。这是九个需要计算的案例。

    如果第一个数字不是5,则它有7个选项:[1234679];如果任何其他数字不是5,则它有8个选项:[12346790]。

    这里C(5)是放置5s的组合数,C(o) - 放置其他数字。

    N(5).  1st?    C(5)   C(o)
    1        Y     1   *   8^4
    1        N     4   *  7*8^3
    2        Y     4   *   8^3
    2        N     6   *  7*8^2
    3        Y     6   *   8^2
    3        N     4   *  7*8
    4        Y     4   *  8
    4        N     1   *  7
    5        Y     1
    
    Sum:     23816