Головний закон країни «Конституція України»
містить 45 сторінок, на кожній сторінці в середньому
42 рядків, у кожному рядку умовно 66 символів
(включаючи пропуски). Знайдіть довжину двійкового
коду тексту книжки, якщо для кодування кожного
символу використано 8-бітне кодування Windows-1251.
Обчислення здійсніть за до калькулятора
ПК. Відповідь дайте в Кб, Мб.
// Внимание! Если программа не работает, обновите версию!
function ДробьНесократима(Чис,Знам:integer):boolean;
begin
while Знам<>0 do begin Чис:=Чис mod Знам; Swap(Чис,Знам) end;
Result:=Чис=1
end;
begin
for var Знаменатель:=2 to 7 do
for var Числитель:=1 to Знаменатель-1 do
if ДробьНесократима(Числитель,Знаменатель) then
Write(Числитель,'/',Знаменатель,' ');
Writeln
end.
Результат
1/2 1/3 2/3 1/4 3/4 1/5 2/5 3/5 4/5 1/6 5/6 1/7 2/7 3/7 4/7 5/7 6/7
int main(){
int div[10001];
int i,d,n,x;
long int p = 1;
for(i = 0; i < 10000; i++)
div[i] = 1;
scanf("%d",&n);
for(i = 0; i < n; i++){
scanf("%d",&x);
d = 2;
while(d <= x){
while(x%d == 0){
x /= d;
div[d]++;
}
d++;
}
}
for(i = 0; i < 10000; i++)
p *= div[i];
printf("%ld",p);
return 0;
}
/*
Небольшое пояснение:
Идея решения заключается в том, что любой делитель результата представим как произведение простых чисел в определенных степенях. Тогда набор этих степеней однозначно определяет соответствующий делитель. Максимальная степень, с которой может быть взято простое число, является суммой степеней, с которыми оно входит в множители.
Для простоты массив вхождений делителей задан от 0 до 10000, но т.к. перебор делителей множителей идет по возрастанию, учтены будут только простые делители.
Пример:
10 * 8 * 9 = 720
10 = 2^1*5^2
8 = 2^3
9 = 3^2
Т.е. число 2 входит в произведение в четвертой степени, 3 - во второй, 5 - в первой.
Значит любой делитель числа 720 представим (единственным образом) в виде
2^(d2) * 3^(d3) * 5^(d5), где d2 = 0..4, d3 = 0..2, d5 = 0..1
Например, 1 = 2^0 * 3^0 * 5^0, 720 = 2^4 * 3^2 * 5^1
Есть выбрать выбрать d3 и выбрать d5 --> всего 5 * 3 * 2 = 30 возможных наборов --> 30 делителей у числа 720
(если какое-то число не появляется среди делителей множителей, то его можно взять только одним со степенью 0 - что не влияет на ответ)
*/