Задача A. Крутой подарок
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
У Темирлана недавно был день рождения. Из его друзей самый оригинальный подарок решил
сделать его друг, Айсултан. Айсултан знает, что Темирлан любит крутые числа. Число называется
крутым, если оно является квадратом целого числа. Например, 0, 9, 121 — крутые числа; а 50, 3,
12 — не крутые числа.
В распоряжении Айсултана есть последовательность из n целых чисел — a1, a2, a3, ..., an. Чтобы
сообразить подарок, Айсултан берет два числа из этой последовательности aj и ai таких, что j < i
и если число aj ∗ ai является крутым, то он подарит произведение этих двух чисел Темирлану понять Айсултану, сколькими он может это сделать. Формально, найдите
количество пар чисел (aj , ai) таких, что j < i и произведение aj ∗ ai является крутым числом.
Формат входных данных
Первая строка входных данных содержит одно число n — размер последовательности Айсултана
(1 ⩽ n ⩽ 103
).
Вторая строка входных данных содержит n целых чисел a1, a2, a3, ..., an через пробел — последовательность
Айсултана (−1000 ⩽ ai ⩽ 1000).
Формат выходных данных
В единственной строке выведите одно число — ответ на задачу.
Примеры
стандартный ввод стандартный вывод
4
1 0 1 1
6
2
-8 -2
1
3
1 16 4
3
1
0
0
Замечание
Данная задача содержит 3 подзадачи.
1. 0 ⩽ ai ⩽ 1 для всех 1 ⩽ i ⩽ n.
2. n = 2, −1000 ⩽ ai ⩽ 1000.
3. Ограничения из условия.
В первом примере всего существует 6 пар чисел и все они являются квадратами числа 0 или 1.
Во втором примере единственная пара при произведении дает 16, что является квадратом целого
числа.
В третьем примере все три пары (1, 16), (1, 4), (16, 4) в произедении дают квадрат целого числа.
В четвертом примере нет пар.
#include <iostream>
inline void sort(int *a, int *b, int *c);
int main()
{
int x, y, z;
std::cin >> x >> y >> z;
void (*ptr)(int *x, int *y, int *z);
ptr = sort;
(*ptr)(&x, &y, &z);
std::cout << x << " " << y << " " << z << std::endl;
system("pause");
return 0;
}
inline void sort(int *a, int *b, int *c)
{
if (*b < *a) std::swap(*a, *b);
if (*c < *a) std::swap(*a, *c);
if (*c < *b) std::swap(*b, *c);
}
2) в 1 дюйме = 2,54 см, значит в 10 см содержится 3,94 дюйма (10/2,54 = 3,94)
3) 3,94* 1200 = 4728 пикселей по ширине и по высоте экрана
4) 4728 * 4728 = 22353984 точек в цветном изображении 10 на 10 см
5) 22353984 * 24 = 536495616 бит - информационный объем изображения
Переведем в большие единицы измерения:
536495616 бит / 8 = 67061952 байт / 1024 = 65490,2 Кбайт / 1024 = 64 Мбайта
ответ: полученный файл будет 64 Мбайта.