编写一个程序,输出包含5但不包含8的5位数的总数

Write a program that outputs the total of 5-digit numbers with a five in them, but not with an 8

本文关键字:包含 5位 输出 程序 一个      更新时间:2023-10-16

我的挑战是输出有数字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;
}

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

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

因为你不能选择数字8,你有9个可能的数字,所以这个问题等价于同样的问题,以9为基数(而不是以10为基数)。

如果你把1个数字变成5,剩下4个非5和非8的数字。这些数字的数量可以计算为8^4(因为有8个可用的数字可供选择,您需要从中选择4个)。对于一个5,有5种方法来定位5,所以乘以5。

与2个5类似,有10种方法来定位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数字。

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

  1. 第一个数字不是零,因为它应该是一个五位数。
  2. 没有数字为8
  3. 一个或多个数字为5

可以有1到5个数字,其中第一个数字是或不是5(55555除外)。总共有9个病例。

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

这里C(5)表示放置5的组合数,C(0) -表示放置其他数字的组合数。

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