c++
358
Кількість сегментів для кожної цифри:
0 → 6 1 → 2 2 → 5 3 → 5 4 → 4 5 → 5 6 → 6 7 → 3 8 → 7 9 → 6#include <iostream> #include <string> using namespace std; int main() { string N; cin >> N; int leds[] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; long long result = 0; for (char c : N) { result += leds[c - '0']; } cout << result; return 0; }Програма читає число як рядок, потім для кожної цифри додає відповідну кількість LED-сегментів.
Приклад
Вхід:
123Обчислення:
1 → 2
2 → 5
3 → 5
Разом: 2 + 5 + 5 = 12Вихід:
12359
Знайдемо відстань d від центра кола C(x,y) до прямої через точки P1(x1,y1) і P2(x2,y2) (формула через модуль векторного добутку / довжина вектора).
Якщо d>R — пряма не перетинає коло → виводимо
-1.Якщо d≈R — дотикається → виводимо
0.00000.Інакше довжина відрізка всередині кола = 2R2−d2.
Програма (вивід з точністю 5 знаків після крапки; при відсутності перетину —
-1):#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); double R, xc, yc, x1, y1, x2, y2; if (!(cin >> R >> xc >> yc >> x1 >> y1 >> x2 >> y2)) return 0; const double EPS = 1e-12; // Випадок, коли дві точки співпадають (дефект даних) — обробимо окремо. double dx = x2 - x1; double dy = y2 - y1; if (fabs(dx) < EPS && fabs(dy) < EPS) { // пряма не визначена; розглянемо точку P1 double distP = hypot(x1 - xc, y1 - yc); if (distP > R + 1e-9) { cout << "-1\n"; } else if (fabs(distP - R) <= 1e-9) { cout.setf(ios::fixed); cout << setprecision(5) << 0.0 << "\n"; } else { // точка всередині кола — за умовою пряма не визначена, виведемо 0.00000 cout.setf(ios::fixed); cout << setprecision(5) << 0.0 << "\n"; } return 0; } // Відстань від центра до прямої: |(P2-P1) x (P1-C)| / |P2-P1| double cross = fabs(dx * (y1 - yc) - dy * (x1 - xc)); double len = hypot(dx, dy); double d = cross / len; if (d > R + 1e-9) { cout << "-1\n"; } else if (fabs(d - R) <= 1e-9) { cout.setf(ios::fixed); cout << setprecision(5) << 0.0 << "\n"; } else { double inside = 2.0 * sqrt(max(0.0, R * R - d * d)); cout.setf(ios::fixed); cout << setprecision(5) << inside << "\n"; } return 0; }571#include <iostream> #include <algorithm> using namespace std; long long gcd(long long a, long long b) { while (b != 0) { long long t = a % b; a = b; b = t; } return a; } int main() { int n; cin >> n; long long x; cin >> x; // перше число long long g = x; for (int i = 1; i < n; i++) { cin >> x; g = gcd(g, x); } cout << g; return 0; }572перебираємо дільники до √n, для кожного — рахуємо степінь,наприкінці, якщо n > 1, додаємо його як простий дільник.#include <iostream> using namespace std; int main() { long long n; cin >> n; bool first = true; for (long long p = 2; p * p <= n; p++) { if (n % p == 0) { int cnt = 0; while (n % p == 0) { n /= p; cnt++; } if (!first) cout << "*"; first = false; cout << p; if (cnt > 1) cout << "^" << cnt; } } // Якщо після всіх поділів n > 1 → це простий дільник if (n > 1) { if (!first) cout << "*"; cout << n; } return 0; }662Податок = 1% від D
Тобто:
Якщо D кратне 100 → відповідь = D / 100
Інакше → відповідь = D / 100 + 1
Оскільки D може мати до 200 цифр, використовуємо рядки й ділимо вручну.#include <iostream> #include <string> using namespace std; int main() { string D; cin >> D; string result; int carry = 0; // Ділимо число D на 100 (тобто на 10 і ще раз на 10) // Реалізуємо поділ на 100 одразу for (char c : D) { int cur = carry * 10 + (c - '0'); result.push_back(char(cur / 100 + '0')); carry = cur % 100; } // Прибрати провідні нулі int pos = 0; while (pos < (int)result.size() && result[pos] == '0') pos++; if (pos == (int)result.size()) result = "0"; else result = result.substr(pos); // Якщо було неціле ділення, округлюємо вгору if (carry != 0) { // додаємо 1 до result int i = result.size() - 1; while (i >= 0 && result[i] == '9') { result[i] = '0'; i--; } if (i >= 0) result[i]++; else result = "1" + result; } cout << result; return 0; }