aureole6452
?>

3.задано n натуральных чисел a1, a2, …, an ( ), каждое из которых находится в интервале от 1 до 10000. необходимо определить количество натуральных делителей произведения a1*a2*…*an. надо написать программу на си

Информатика

Ответы

M19026789436
#include<stdio.h>
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 - что не влияет на ответ)
*/
autofilters27
Ао условию, у тебя два шкафа, в каждом из которых 128 полок, и в этих полках 4 единицы (во всех 128), значит в обоих шкафах 8 единиц, отсюда следует:
Максимальное кол-во единиц при 126 полках с нулями и 2 полками с единицами
(1111000v000111=1111111 и 0000000v1000000=1000000) т..е. в 3 шкафу будет 126 полок с нулями и 2 полки с 8 единицами.
Минимальное кол-во при 127 полками нулей и 1 полкой единиц
(1111000v1111000=1111000) т.е. в 3м шкафу будет 127 полок с нулями и 1 полка с 4 единицами.
Значит максимум 8 единиц, а минимум 4
achernakov
Ответ: истинности для некоторых троичных логических функцийx   2   1   0   2   1   0   2   1   0y   2   2   2   1   1   1   0   0   0min(x,y)   2   1   0   1   1   0   0   0   0x   2   1   0   2   1   0   2   1   0y   2   2   2   1   1   1   0   0   0max(x,y)   2   2   2   2   1   1   2   1   0x   2   1   0   2   1   0   2   1   0y   2   2   2   1   1   1   0   0   0f2tn22310   0   0   0   0   2   2   0   2   1

вроде так^: >

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

3.задано n натуральных чисел a1, a2, …, an ( ), каждое из которых находится в интервале от 1 до 10000. необходимо определить количество натуральных делителей произведения a1*a2*…*an. надо написать программу на си
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

kiravalter1998697
lyukiss
Терентьева
Avdeeva Yelizaveta
zalev
zimin0082
evlampin
oskar-pn
osandulyak
Valentina1520
marinarodina90
fetisov68av
TatarkovTitova
rodsher7740
Coffee3862