Форум программистов, компьютерный форум CyberForum.ru

Фукусима-2 - C++

Восстановить пароль Регистрация
 
nazerke
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 24
26.10.2013, 09:34     Фукусима-2 #1
Файл входного файла: hacker.in
Файл выходного файла: hacker.out
Ограничение по памяти: 64 MB
Ограничение по времени: 2 s
Описание

В Японии произошло очередное землетрясение. Жители были сильно напуганы, что ядерный реактор может снова взорваться. Ведь после этого, в стране начнется хаос и кто знает, когда страна снова стабилизируется.
Чтобы остановить ядерный синтез в реакторе надо ввести особенный пароль, который по некоторой случайности забыл главный служащий по паролям - Наруто. Но его лучший друг – Саске, который разбирается в криптографии и, конечно же хоть немного смыслит в осторожности, обратился к самому лучшему хакеру в мире, к Вам.
Вы заметили, что в корневой папке системы лежит файл Nichippon.txt, который содержит единственное число x. По слухам местных программистов, это число – подсказка от пароля.
Дело в том, что пароль, это – сумма всех делителей натурального числа x, делящихся на каждое из простых чисел, на которое делится x.
Подсказки: + Число a делится на b, если остаток при делении равен 0. + Простое число делится только на 1 и на само себя.
Формат входных данных

Первая строка содержит число x (1 <= x <= 10^18), все простые делители числа x не превосходят 1000.
Формат выходных данных

В выходной файл выведите пароль.
Примеры:

Input Output
12
18
239
239
Помогите срочно пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
26.10.2013, 10:20
  #2

Не по теме:

Терпеть не могу такое "украшательство"! Сказали бы просто: найти сумму всех делителей натурального числа x, делящихся на каждое из простых чисел, на которое делится x.

nazerke
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 24
26.10.2013, 10:31  [ТС]     Фукусима-2 #3
Что поделать если задача такова?Лучше напишите ответ!Пожалуйста!
magirus
Супер-модератор
 Аватар для magirus
25479 / 14020 / 740
Регистрация: 15.09.2009
Сообщений: 59,700
Записей в блоге: 61
26.10.2013, 15:20     Фукусима-2 #4
Цитата Сообщение от nazerke Посмотреть сообщение
Лучше напишите ответ!
лучше сами начните что то делать...
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
26.10.2013, 19:22     Фукусима-2 #5
видимо ребята считают, что факторизация за корень зайдет в две секунды...

Добавлено через 9 минут
авторское решение (Сергей Поромов)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void solve() throws IOException {
        br = new BufferedReader(new FileReader(FILENAME + ".in"));
        out = new PrintWriter(FILENAME + ".out");
        long n = nextLong();
        myassert(n >= 1 && n <= 1e18, "Constant not in range");
        long ans = 1;
        for (int i = 2; i < 1000; i++) {
            long t = i;
            while (n % i == 0) {
                n /= i;
                t *= i;
            }
            if (t != i) {
                ans *= (t - 1) / (i - 1) - 1;
            }
        }
        myassert(n == 1, "Prime divider is big - " + n);
        out.println(ans);
        out.close();
    }
Добавлено через 55 секунд
все-таки думать не бесполезно...
Yandex
Объявления
26.10.2013, 19:22     Фукусима-2
Ответ Создать тему
Опции темы

Текущее время: 15:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru