Моя задача состоит в том, чтобы вывести общее количество пятизначных чисел, которые имеют цифру 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;
}
(число с 5, но не 8) = (число без 8) — (число ни с 8, ни 5) = 8 * 9 * 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 способов позиционирования 5 относительно других цифр.
Поэтому у нас есть следующая таблица:
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
числа, удовлетворяющие вашим критериям.
Это на самом деле математическая проблема. Здесь у нас есть три условия:
Могут быть цифры от одного до пяти 5, где первая цифра равна или не равна 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