nerminefendieva
21.09.2021 13:05

Добрый день, есть вот такая задачка, которую адо решить на C++: Простой снеговик Нолс любит все, что такое же простое, как он, и такое же круглое, как он. Он попросил своего друга, зайца Тимофея, загадать два числа, a и b. После этого он решил перемножить все простые числа, лежащие между a и b (включительно), и посмотреть, насколько круглое число получится..

К сожалению, ни Нолс, ни Тимофей сами не умеют считать им
Попробовал решить вот так, но по времени не проходит:

#include

using namespace std;
#define int long long

signed main() {
int a, b;
cin >> a >> b;
if (a == 1) {
a = 2;
}
int count = 1;
for (int i = a; i <= b; i++) {
bool prime = true;
for (int j = a; j * j <= i; j++) {
if (i % j == 0) {
prime = false;
break;
}
}
if (prime) count *= i;
}

int ans = 0;
while (count % 10 == 0){
ans++;
count /= 10;
}
cout << ans;
return 0;
}
Спросил у опытных людей, сказали, что задачу можно решить через if типа вот так:
int main() {
int a, b;
cin >> a >> b;
if (some_cond) {
cout << one_ans;
} else {
cout << another_ans;
}
}
Не могу ни как допереть .

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
максим1715
31.08.2022 12:21
№ 1 Используя логические операции, запишите высказывания, которые являются истинными при выполнении следующих условий: 1) неверно, что 0 < X ≤ 3 и Y>5; 2) X является max(X,Y); 3) X не является min(X,Y); 4) Z является min(X,Y,Z). № 2 Используя логические операции, запишите высказывания, которые являются истинными при выполнении следующих условий: 1) Y не является max(X,Y,Z) и не является min(X,Y,Z); 2) X,Y,Z равны между собой; 3) каждое из чисел X,Y,Z положительно; 4) каждое из чисел X,Y,Z отрицательно.
0,0(0 оценок)
Ответ:
nikasuper09
06.11.2022 05:12
Const
    handsfree = true;

var
    a: array[1..100] of real;
    i, n: integer;
    min, max: real;
    k: integer;

begin
    {ввод массива}
    if handsfree then
        n := random(20) + 5
    else begin
        write('n = ');
        readln(n);
    end;
    
    writeln('Данные массива:');
    for i := 1 to n do
    begin
        if handsfree then begin
            a[i] := random(100);
            write(a[i], ' ');
        end
        else readln(a[i]);
    end;
    writeln();
    
    {подсчет элементов}
    k := 0;
    for i := 1 to n do
        if a[i] > 5 then k := k + 1;
    writeln(k);
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота