Есть ответ 👍

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

111
284
Посмотреть ответы 2

Ответы на вопрос:

юм123
4,6(40 оценок)

#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 есть 5 способов выбрать d2 (0,1,2,3,4), 3 способа выбрать d3 и 2 способа выбрать d5 --> всего 5 * 3 * 2 = 30 возможных наборов --> 30 делителей у числа 720 (если какое-то число не появляется среди делителей множителей, то его можно взять только одним способом - со степенью 0 - что не влияет на ответ) */
vladasic
4,6(66 оценок)

Abc паскаль var     sum: longint;   begin   sum: =0;   // основной цикл   for var i: =3 to 19 do   begin     sum: =sum+5*i;     writeln (i*5);   end;   writeln('сумма всех двузначных чисел кратных 5 = ',sum); end.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS