Стандартный набор земного домино состоит из 28 прямоугольных плашек, разделённых на две части. На каждую часть наносится некоторое количество точек (от нуля до шести) таким образом, чтобы не было одинаковых плашек.
По тому же принципу построен и набор марсианского домино за исключением того, что на каждой плашке располагается от 0 до N точек (при этом общее количество плашек также меняется).
Требуется написать программу, подсчитывающую количество плашек в марсианском домино и общее количество точек на всех плашках.
Входные данные
На вход подается одна строка, содержащая натуральное число N (N<30 000).
Выходные данные
Вывести нужно одну строку, содержащую через пробел два числа — количество плашек в наборе марсианского домино и общее количество точек на всех плашках.
входные данные
2
выходные данные
6 12
входные данные
6
выходные данные
28 168
C/C++
Не могу написать код на с++ нужно решать через циклы но если у вас другие варианты пишите тоже желательно циклы
Бессмысленно делать циклами простейшую арифметику.
Всего может быть (N + 1) ** 2 плашек. При этом N + 1 плашка уникальна, а остальные N * (N + 1) плашек находятся в двух экземплярах (1-3 и 3-1).
Всего плашек: (N + 1) + N * (N + 1) / 2 = N * (N + 3) / 2 + 1
Опять же, возьмём полный набор из (N + 1) ** 2 плашек (c повторениями). Каждое число точек на них встречается 2 * (N + 1) ** 2 / (N - 1) = 2 * (N + 1) раз. Сумма точек равна:
2 * (N + 1) * (N + 1) * (0 + N) / 2 = N * (N + 1) * (N + 1)
Сумма цифр на плашках с парами одинаковых цифр равна:
(N + 1) * (0 + 2 * N) / 2 = N * (N + 1).
Сумма цифр на "несимметричных" плашках с повторениями равна:
N * (N + 1) * (N + 1) - N * (N + 1) = N * N * (N + 1)
Но "несимметричных" плашек ровно в 2 раза больше, чем должно быть. И реальная сумма в 2 раза меньше:
N * N * (N + 1) / 2
Итого:
N * (N + 1) + N * N * (N + 1) / 2 = (N * N + 2 * N) * (N + 1) / 2 = N * (N + 1) * (N + 2) / 2
Весь код:
Всего может быть (N + 1) ** 2 плашек. При этом N + 1 плашка уникальна, а остальные N * (N + 1) плашек находятся в двух экземплярах (1-3 и 3-1).
Всего плашек: (N + 1) + N * (N + 1) / 2 = N * (N + 3) / 2 + 1
Опять же, возьмём полный набор из (N + 1) ** 2 плашек (c повторениями). Каждое число точек на них встречается 2 * (N + 1) ** 2 / (N - 1) = 2 * (N + 1) раз. Сумма точек равна:
2 * (N + 1) * (N + 1) * (0 + N) / 2 = N * (N + 1) * (N + 1)
Сумма цифр на плашках с парами одинаковых цифр равна:
(N + 1) * (0 + 2 * N) / 2 = N * (N + 1).
Сумма цифр на "несимметричных" плашках с повторениями равна:
N * (N + 1) * (N + 1) - N * (N + 1) = N * N * (N + 1)
Но "несимметричных" плашек ровно в 2 раза больше, чем должно быть. И реальная сумма в 2 раза меньше:
N * N * (N + 1) / 2
Итого:
N * (N + 1) + N * N * (N + 1) / 2 = (N * N + 2 * N) * (N + 1) / 2 = N * (N + 1) * (N + 2) / 2
Весь код:
int n;
cout
Марат Нурбаев
это не я сказал ,а учитель
#include <iostream>
int main(){uintmax_t n,m; std::cin>>n; m=(n+1)*(n+2)/2; std::cout<<m<<' '<<m*n;}
Если обязательно с циклом, то :))
#include <iostream>
int main(){uintmax_t n,m; std::cin>>n; do m=(n+1)*(n+2)/2; while(false); std::cout<<m<<' '<<m*n;}
int main(){uintmax_t n,m; std::cin>>n; m=(n+1)*(n+2)/2; std::cout<<m<<' '<<m*n;}
Если обязательно с циклом, то :))
#include <iostream>
int main(){uintmax_t n,m; std::cin>>n; do m=(n+1)*(n+2)/2; while(false); std::cout<<m<<' '<<m*n;}
Похожие вопросы
- Прошу помогите написать код на c++, нужно сдать сегодня ?
- Помогите пожалуйста не могу написать код
- Нужно написать код на с++
- Написать код на си .Желательно с объяснением
- Написать код на языке си
- Помогите написать код решения уравнения, желательно на с++
- Помогите С++ с цикла for нужно сделать while цикл и do while цикл точнее у меня вышла только с циклом for
- Помогите пожалуйста написать код.(C++)
- Написать код на языке C++
- Написал код для языка C, но работает не правильно