Р-10. Маша составляет шестибуквенные слова перестановкой букв слова КАПКАН. При этом она избегает слов с двумя подряд одинаковыми буквами. Сколько различных кодов может составить Маша? Решение:
1) если не учитывать, что в слове есть одинаковые буквы, общее количество перестановок 6 букв равно 6! = 720
2) так как перестановка пары одинаковых букв не даёт нового слова, каждая пара уменьшает количество уникальных слов в 2 раза; а у нас 2 пары (повторяются К и А), поэтому количество уникальных слов – в 4 раза меньше, оно равно 720/4 = 180
почему каждая пара уменьшает количество уник. слов именно в два раза? Не очень понятно без доп. объяснения. Кто может объяснить
type
ty=set of char;
Const
t:ty=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
Var
f:text;
s:string;
i,slo,ks:integer;
k:real;
begin
assign(f,'text.in');
reset(f);
while not Eof(f) do read(f,s);
close(f);
slo:=0;
ks:=0;
for i:=1 to length(s) do
if s[i] in t then inc(slo) else
begin;
k:=k+slo;
inc(ks);
slo:=0;
end;
if s[length(s)] in t then
begin;
inc(ks);
k:=k+slo;
end;
k:=k/ks;
assign(f,'text.out');
rewrite(f);
write(f,k);
close(f);
end.
Пример ввода(text.in):
SIMPLE text
Пример вывода(text.out):
5
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <algorithm>
#include <functional>
#include <cstring>
#include <utility>
#include <bitset>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <climits>typedef unsigned long long ulol;
typedef long long lol;
typedef long int li;#define mp make_pair
#define F first
#define S second
#define sqr(a) ( (a) * (a) )
#define pb push_back
#define INF 999999999
#define ret(a) cout << endl; system("pause"); return(a)
//#define ret(a) return(a)using namespace std;int main()
{
string s;
cin >> s;
cout << 1 << s << 1;
ret(0);
}