Предмет: Информатика, автор: krutoyb42

Анаграмма слова может быть другим словом, составленным из букв этого слова. Например, слово SOLO имеет 12 анаграмм: SOLO, LOSO, OSLO, OLSO, OSOL, OLOS, SLOO, LSOO, OOLS, OOSL, LOOS, SOOL. Напишите программу, которая подсчитывает, сколько разных анаграмм имеет данное слово.с++ помогите срочно пж!!!!


boberon: Это не анаграммы, это перестановки. Судя по примеру, интересует число различных перестановок. Нужно взять общее количество перестановок n!, и для каждой повторяющейся буквы поделить его на k!, где k - количество повторений.
boberon: В примере с SOLO: n = 4! = 24. Буква O повторяется два раза, других повторяющихся букв нет, поэтому ответ 24 / 2! = 12.
boberon: А вот писать на C++ совсем неохота, так что тут сорри.

Ответы

Автор ответа: soabdulloh71
0

Ответ:

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

 int r;

 long double factorial = 1.0;

 string x;

 cout << "Ведите слово: ";

 cin >> x;

 for(int i = 1; i <= x.length(); ++i) {

           factorial *= i;

       }

 r = factorial/2;

 cout << "Анаграмма слова: "<< r;

return 0;

}

Объяснение:


boberon: Будет работать только для слов, в которых ровно одна буква повторяется ровно два раза.
boberon: Ну и тип переменной factorial лучше сделать целочисленным. Скажем, long long.
Похожие вопросы
Предмет: Окружающий мир, автор: BOGIMASTER
Предмет: Музыка, автор: Arinamorozik