пятница, 5 декабря 2025 г.

 c++

20

Дано натуральне число . Виконайте наступну операцію: відніміть з числа  суму його цифр. Повторюйте цю операцію з новим результатом, доки число залишається додатним. Визначте, скільки разів можна виконати цю операцію, поки результат не стане нульовим або від’ємним.

Вхідні дані

Одне ціле число  ().

Вихідні дані

Виведіть кількість виконаних операцій.

Приклади

Вхідні дані #1
21
Відповідь #1
3


#include <bits/stdc++.h>

using namespace std;

long long sumDigits(long long x) {

    long long s = 0;

    while (x > 0) {

        s += x % 10;

        x /= 10;

    }

    return s;

}

int main() {

    ios::sync_with_stdio(false);

    cin.tie(nullptr);

    long long n;

    cin >> n;


    int steps = 0;

    while (n > 0) {

        n -= sumDigits(n);

        steps++;

    }

    cout << steps;

}

108

Дано три цілі числа , кожне з яких задовольняє .

Вхідні дані

Дано три цілі числа , кожне з яких задовольняє .


Виведіть середнє за значенням серед трьох чисел.

#include <bits/stdc++.h>

using namespace std;

int main() {

    int a, b, c;

    cin >> a >> b >> c;

    int arr[3] = {a, b, c};

    sort(arr, arr + 3);

    cout << arr[1]; // середнє за значенням (медіана)

    return 0;

}

109

Щоб пронумерувати  сторінок у книжці, використовується всього  цифр. За заданим  визначте число сторінок , якщо таке  існує; інакше виведіть 0. Нумерація починається з першої сторінки.

Вхідні дані

У вхідних даних одне ціле число . У книзі не більше  сторінок.

Вихідні дані

Виведіть кількість сторінок  у книзі. Якщо такого  не існує, виведіть 0.

Приклади

Вхідні дані #1
27
Відповідь #1
18

#include <bits/stdc++.h>
using namespace std;

int digitsCount(int x) {
    int cnt = 0;
    while (x > 0) {
        cnt++;
        x /= 10;
    }
    return cnt;
}

int main() {

    long long n;
    cin >> n;
    long long digits = 0;
    for (int m = 1; m <= 7000; ++m) {
        digits += digitsCount(m);
        if (digits == n) {
            cout << m;
            return 0;
        }
        if (digits > n) break;
    }
    cout << 0; // якщо жодне m не підійшло
    return 0;
}
110

#include <bits/stdc++.h>
using namespace std;

int main() {
  
    int N;
    cin >> N;
    vector<bool> win(N + 1, false); // win[i] = true, якщо гравець, що ходить може виграти
    win[1] = false; // 1 камінь не можна розділити

    for (int n = 2; n <= N; ++n) {
        for (int a = 1; a < n; ++a) {
            int b = n - a;
            if (a != b && !win[b]) {
                win[n] = true;
                break;
            }
        }
    }

    // Тепер знайдемо перший хід
    int firstMove = 0;
    for (int a = 1; a < N; ++a) {
        int b = N - a;
        if (a != b && !win[b]) {
            firstMove = a;
            break;
        }
    }
    cout << firstMove << '\n';

}
111

Годинник з боєм кожної повної години б’є стільки разів, яка цифра вказується на циферблаті (від  до ), а також один раз, коли хвилинна стрілка показує на .

Вхідні дані

У вхідних даних вказано початковий та кінцевий час у межах однієї календарної доби, в годинах () і хвилинах (), через пропуск, де .

Вихідні дані

Виведіть загальну кількість ударів у вказаному інтервалі.

Приклади

Вхідні дані #1
13 30 15 10
Відповідь #1
7

#include <bits/stdc++.h>
using namespace std;

int main() {

    int H1, M1, H2, M2;
    cin >> H1 >> M1 >> H2 >> M2;

    int start = H1 * 60 + M1;
    int end = H2 * 60 + M2;

    int total = 0;
    for (int t = start; t <= end; ++t) {
        int H = t / 60;
        int M = t % 60;

        if (M == 0) {
            int hour_on_clock = H % 12;
            if (hour_on_clock == 0) hour_on_clock = 12;
            total += hour_on_clock;
        } else if (M == 30) {
            total += 1;
        }
    }

    cout << total << '\n';
    return 0;
}

112

На честь дня народження спадкоємця Тутті королівський кухар приготував величезний святковий торт, який подали Трьом Товстунам. Перший товстун міг з’їсти весь торт сам за  годин, другий — за  годин, а третій — за  годин.

Скільки часу потрібно товстунам, щоб разом з’їсти весь торт?

Вхідні дані

В єдиному рядку задано три невід'ємних цілих числа  та , кожне з яких не перевищує .

Вихідні дані

Виведіть час у годинах, за який троє товстунів разом з’їдять торт. Округліть результат до двох знаків після коми.

Приклади

Вхідні дані #1
3 3 3
Відповідь #1
1.00

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    double t1, t2, t3;
    cin >> t1 >> t2 >> t3;

    double totalSpeed = 0;
    if (t1 > 0) totalSpeed += 1.0 / t1;
    if (t2 > 0) totalSpeed += 1.0 / t2;
    if (t3 > 0) totalSpeed += 1.0 / t3;

    double T;
    if (totalSpeed > 0)
        T = 1.0 / totalSpeed;
    else
        T = 0; // якщо всі t_i = 0 (неможливо, але для безпеки)

    cout << fixed << setprecision(2) << T << '\n';

    return 0;
}
113

У продавця повітряних кульок є  кульок. Кожна кулька має певний колір. Нещодавно Три Товстуни видали указ, що дозволяє продавати кульки лише одного кольору. Щоб не порушувати закон і не втратити прибуток, продавець вирішив перефарбувати частину кульок.

Вхідні дані

У першому рядку задано кількість кульок  ().

У другому рядку задано  цілих чисел від  до  — кольори кульок: — синій — зелений — блакитний — червоний — рожевий — жовтий — сірий — чорний — білий

Вихідні дані

Виведіть мінімальну кількість кульок, які потрібно перефарбувати, щоб усі кульки були одного кольору.

Приклади

Вхідні дані #1
4
3 1 2 1

Відповідь #1
2
Вхідні дані #2
4
4 9 9 6
Відповідь #2
2
#include <bits/stdc++.h>
using namespace std;
int main() {

    int n;
    cin >> n;
    vector<int> count(10, 0); // кольори від 1 до 9

    for (int i = 0; i < n; ++i) {
        int color;
        cin >> color;
        count[color]++;
    }

    int max_count = *max_element(count.begin() + 1, count.end());
    cout << n - max_count << '\n';

    return 0;
}
115















Комментариев нет:

Отправить комментарий