Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 
[Вернуться к задаче]   1 2 3
  1  Монтеверде Авраам Соломонович, 20 июля 2017 г. 22:32:25
     Для решения задачи не нужно иметь ни функций проверки на простоту, ни различных хаков с библиотеками.
Даже никаких контейнеров и структур данных использовать не надо.
Достаточно всего лишь понимать, что такое разложение на простые множители, и немного подумать.
Моё решение в 25 строчек работает 0.03 секунды (С++) на всех тестах.
  2  Строганов Никита Сергеевич, 21 июня 2017 г. 16:18:17
     Сама задача легкая, но ограничение по времени делает её такой, какая она есть)
  3  Максименко Илья, 10 мая 2017 г. 13:34:03
     Решайте без НОД. Я сначала попробовал с НОД и как не старался не мог найти ошибку с 20 тестом.
Другой способ описан в обсуждении
  4  Тошпулатов, 10 марта 2017 г. 4:20:41
     Урааа сдал
уже 6:20 утра ))
теперь могу ложиться спать с гордостью )
  5  Чумаченко Андрей Сергеевич, 24 декабря 2016 г. 0:21:58
     Моя попытка под номером 6136672 принята как успешная, хотя существует контртест, например, 19 19.
  6  Закария Таттимбет, 13 декабря 2016 г. 13:28:47
     Помогите люди!!!
У меня на 14 тесте WA
Всяческие тесты проверяю, вроде все норм
Не могу найти ошибку
  7  Генацвале Гоги, 12 декабря 2016 г. 11:52:36
     Моё решение получилось достаточно коротким (174 символа на С++)
Но, на мой взгляд, задача всё-таки тянет посложнее, чем на 20%.
Всё-таки человеку необходимо иметь представление о факторизации чисел.
  8  Ораин Даниил Игоревич, 05 декабря 2016 г. 21:53:09
     Будьте осторожны с единичкой во втором тесте, у меня 4 раза WA было из-за того, что не учёл её.
  9  Неизвестный, 13 октября 2016 г. 10:41:01
     Здраствуйте!
У меня было очень много TLE, на тесте 19. Я решил эту задачуб и хочу вам поделится с шорткатами которые помогут вам обойти TLE.
1) Используйте scanf, printf(библиотека stdio.h), вместо cin, cout.
2) Если вы найти простое число делай тест деления до корня числа
3) Если у вас есть фунция для простых чисел, задайте первые две цифра как 2,3 затем пусть каждое число учеличиватся на 2. Она будет проверять нечетные числаб так как только они могут быть простыми(в начале мы задали 2 как простое число)
4) Допустим есть очень большое простое чилсо, в таком случаи ваша функция будет медленной. Решение, создать функцию isprime, которая будет определять ваше число простое или нет

Если есть вопросы, буду старатся отвечать на них.
  10  Быков Сергей Иванович, 24 августа 2016 г. 12:50:04
     Ребята,помогите!!!
Что с пятым тестом???
  11  Соколов Александр Сергеевич, 24 августа 2016 г. 5:42:07
     НОД не нужен
  12  Максименко Илья, 18 июля 2016 г. 13:27:11
     Мой алгоритм такой:
берём число a*b/(gcd(a,b)*gcd(a,b)) и находим количество простых множителей у него, что и есть ответ, но на больших числах сильно тормозит (gcd(a,b) вычисляется один раз). Валится на 19 тесте, помогите оптимизировать
  13  Дмитрий, 08 июня 2016 г. 15:08:24
     Можно контрпример 10 теста? Пишу на чистом С под Linux, проблема с long long int vs __int64, %lld vs %I64d. С контрпримером будет понятно, ошибка в алгоритме или число в тип данных не помещается.
  14  Волков Павел Михайлович, 07 мая 2016 г. 18:36:57
     // самое простейшее решение
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>

using namespace std;
// функция для разложения на простые множетели
void f(int n, vector<int> &ss) {
int i = 2;
while(i <= sqrt((double)n))
if(n % i == 0) {
ss.push_back(i);
n = n / i;
} else
i++;
if (n > 1)
ss.push_back(n);
}

int main() {
int n, m;
scanf("%d%d", &n, &m);
vector<int> ss, ss1; // вектора для хранеия на простых множетелей
// каждое число разбиваем на простые множетети
f(m, ss);
f(n, ss1);
// исключаем повторяющиеся множетели
for (int i = 0; i < ss1.size(); i++) {
vector<int>::iterator it = find(ss.begin(), ss.end(), ss1[i]);
if (it != ss.end()) {
ss.erase(it);
ss1.erase(ss1.begin() + i);
i = -1;
}
}
// суммируем результат
printf("%d", ss.size()+ ss1.size());
}
  15  Хасанов Хусайн, 13 апреля 2016 г. 9:00:26
     It is not easy problem!
Because it has got a lot of cases!
  16  Калпакбаев Мирлан Калпакбаевич, 01 февраля 2016 г. 7:46:47
     Спасибо всем. Я уже сдал. У 11 теста большие числа. Использовал int64 и
  17  Калпакбаев Мирлан Калпакбаевич, 01 февраля 2016 г. 6:27:19
     Нашел 32768/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*3=3 всего операции 16. Из них деление 15 умножения 1.
По моему 10 тест 3 5 или 5 6.
  18  Калпакбаев Мирлан Калпакбаевич, 30 января 2016 г. 17:10:35
     Здравствуйте, как 32768 3 получилось 16
из 2 36 понятно 2*2*3*3=36 по этому при 2 36 получилось 3. Объясните пожалуйста. Заранее спасибо.
Админ сможешь дать контр. пример для 10-теста. Уже 10-день мучаюсь. Спасибо.
  19  Федосов Ян Русланович, 19 января 2016 г. 11:07:49
     Admin,2 test,please.
  20  Кыздарбеков Нагашбек, 05 ноября 2015 г. 11:14:38
     #include<iostream>
#include<stack>
using namespace std;
int main(){
stack<int>e;
string a;
int b;
while(cin>>a){
if(a=="push"){
cin>>b;
e.push(b);
cout<<"ok\n";
}
else if(a=="pop"){
cout<<e.top();
cout<<"\n";
e.pop();

}
else if(a=="size"){
cout<<e.size();
cout<<"\n";
}
else if(a=="back"){
cout<<e.top()<<"\n";
}
else if(a=="clear"){
while (!e.empty()){

e.pop();
}

cout<<"ok\n";
}
else {
cout<<"bye";
return 0;
}
}
return 0;
}
 1 2 3

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2017, ICQ: 151483