• Нужно на C++ Напишите сам код.

    Дано число. В этом числе необходимо изменить одну цифру таким образом,чтобы новое число делилось на 3 и было бы максимально возможным. В исходном числе нужно обязательно изменить одну цифру,даже если исходное число уже делилось на 3.
    Программа получает на вход одно длинное натуральное число.Длина числа может достигать 100 цифр.
    Программа должна вывести другое натуральное число,удовлетворяющее условиям:
    1)Новое число должно отличаться от данного ровно одной цифрой.
    2)Новое число должно делиться на 3.
    3)Новое число должно быть максимально возможным из всех таких чисел.

Ответы 7

  • Простенькие циклы составлять только могу
    • Автор:

      juanl0nn
    • 5 лет назад
    • 0
  • Не, ну если всем так не нравятся scanf и printf (хотя это абсолютно нормально так писать) могу заменить на std::cin, std::cout
    • Автор:

      kennedi
    • 5 лет назад
    • 0
  • Ну я так и пишу)
    • Автор:

      billy
    • 5 лет назад
    • 0
  • Только сразу вводишь using namespace std;и стд много раз писать не надо
    • Автор:

      dougherty
    • 5 лет назад
    • 0
  • Исправил, И больше изменить не могу.. попрошу модера он исправит
    • Автор:

      haiden
    • 5 лет назад
    • 0
  • #include <cstdio>#include <cstring>intmain(void){    enum     {        MAX_BUF_SIZE = 100    };    char buf[MAX_BUF_SIZE];    scanf("%s", buf);    int n = strlen(buf);    int shift = 0;    for (int i = 0; i < n; i++) {        shift = (shift + buf[i] - '0') % 3;    }    shift = 3 - shift;    int sel = -1;    for (int i = 0; i < n; i++) {        int tmp = buf[i] - '0' + shift;        if (0 <= tmp && tmp <= 9) {            sel = i;            break;        }    }    if (sel == -1) {        for (int i = n - 1; i >= 0; i++) {            int tmp = buf[i] - '0' - shift;            if (0 <= tmp && tmp <= 9) {                buf[i] -= shift;                break;            }        }    } else {        buf[sel] += shift;        while ('0' <= buf[sel] + 3 && buf[sel] + 3 <= '9') {            buf[sel] += 3;        }    }    printf("%s", buf);    return 0;}
    • Автор:

      quincy40
    • 5 лет назад
    • 0
  • #include <iostream>#include <string>#include <vector>using namespace std; int main() {    int sum = 0;    vector<int> v;    string s;    cin >> s;    for (int i = 0; i < s.size(); ++i) {       v.push_back((int)s[i] - 49);       ++sum; ++v[i];   }   int z = sum % 3; z = 3 - z;   {    int i = 0;    while (i <= v.size() && (v[i] + z) > 9) {       ++i;    }    if (i >= v.size()) {      if (z == 3) {          v[v.size() - 1] -= 3;      } else {          v[v.size() - 1] -= (3 + z);      }    } else {       v[i] += z;       while ((v[i] + 3) < 9) {           v[i] += 3;       }     }   }   for (int i = 0; i < v.size(); ++i) {       cout << v[i];   }   return 0;}
    • Автор:

      corbin
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years