Необходимо на C++ Напишите сам код.Дано число. В этом числе нужно
Необходимо на C++ Напишите сам код.
Дано число. В этом числе нужно поменять одну цифру таким образом,чтоб новое число делилось на 3 и было бы очень вероятным. В исходном числе необходимо обязательно поменять одну цифру,даже если начальное число теснее делилось на 3.
Программка получает на вход одно длинноватое естественное число.Длина числа может достигать 100 цифр.
Программка обязана вывести иное натуральное число,удовлетворяющее условиям:
1)Новое число должно отличаться от данного ровно одной цифрой.
2)Новое число обязано делиться на 3.
3)Новое число должно быть очень вероятным из всех таких чисел.
Данил Шакирдинов
лан, щяс помогу, может)
Альбина Ланшова
Я написал,а позже запутался и код не сохранил
Степан Погорелис
Так почему стоит учить с++?
2 ответа
Виктор Бахнаков
include lt;cstdiogt;
include lt;cstringgt;
int
main(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 lt; n; i++)
shift = (shift + buf[i] - '0') % 3;
shift = 3 - shift;
int sel = -1;
for (int i = 0; i lt; n; i++)
int tmp = buf[i] - '0' + shift;
if (0 lt;= tmp amp;amp; tmp lt;= 9)
sel = i;
break;
if (sel == -1)
for (int i = n - 1; i gt;= 0; i++)
int tmp = buf[i] - '0' - shift;
if (0 lt;= tmp amp;amp; tmp lt;= 9)
buf[i] -= shift;
break;
else
buf[sel] += shift;
while ('0' lt;= buf[sel] + 3 amp;amp; buf[sel] + 3 lt;= '9')
buf[sel] += 3;
printf("%s\n", buf);
return 0;
include lt;cstringgt;
int
main(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 lt; n; i++)
shift = (shift + buf[i] - '0') % 3;
shift = 3 - shift;
int sel = -1;
for (int i = 0; i lt; n; i++)
int tmp = buf[i] - '0' + shift;
if (0 lt;= tmp amp;amp; tmp lt;= 9)
sel = i;
break;
if (sel == -1)
for (int i = n - 1; i gt;= 0; i++)
int tmp = buf[i] - '0' - shift;
if (0 lt;= tmp amp;amp; tmp lt;= 9)
buf[i] -= shift;
break;
else
buf[sel] += shift;
while ('0' lt;= buf[sel] + 3 amp;amp; buf[sel] + 3 lt;= '9')
buf[sel] += 3;
printf("%s\n", buf);
return 0;
Данька
include lt;iostreamgt;
include lt;stringgt;
include lt;vectorgt;
using namespace std;
int main()
int sum = 0;
vectorlt;intgt; v;
string s;
cin gt;gt; s;
for (int i = 0; i lt; 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 lt;= v.size() amp;amp; (v[i] + z) gt; 9)
++i;
if (i gt;= 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) lt; 9)
v[i] += 3;
for (int i = 0; i lt; v.size(); ++i)
cout lt;lt; v[i];
return 0;
include lt;stringgt;
include lt;vectorgt;
using namespace std;
int main()
int sum = 0;
vectorlt;intgt; v;
string s;
cin gt;gt; s;
for (int i = 0; i lt; 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 lt;= v.size() amp;amp; (v[i] + z) gt; 9)
++i;
if (i gt;= 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) lt; 9)
v[i] += 3;
for (int i = 0; i lt; v.size(); ++i)
cout lt;lt; v[i];
return 0;
Татьяна Мурша
У меня верно программа работает ^^
Надежда Сапосовская
Карасиков,вы нечаянно не на си делали?
Антон Марфуненков
Нет, на плюсах
Данил Великоредчанин
Просто коды различные
Олеся Сегура-Ласаррага
Хотя не знаю ,я скажем так новичок в это деле
Iljusha
Простенькие циклы сочинять только могу
Лилия Моторич
Не, ну если всем так не нравятся scanf и printf (хотя это абсолютно нормально так писать) могу поменять на std::cin, std::cout
Яна Лачугова
Ну я так и пишу)
Олеся Лепетухина
Только сходу вводишь using namespace std;и стд много раз писать не надобно
Степан Чимиров
Исправил, И больше поменять не могу.. попрошу модератора он исправит
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов