我的挑战是输出数字为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;
}
答案 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^5
,5
但不是8
。
有4*8^3 + 6*8^2 + 4*8^1 + 8^0 = 2465
个号码<10^4
,5
但不是8
。因此,有23816
个数字符合您的条件。
答案 2 :(得分:0)
这实际上是一个数学问题。这里我们有三个条件:
可以有一到五个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