Другие языки программирования и технологии
ПОМОГОТЕ ПЛЗ ЯЗЫК СИ/СИ++
Натуральное число называется двояким, если в его десятичной записи встречается не более двух различных цифр. Например, числа 3, 23, 33, 100, 12121 — двоякие, а числа 123 и 9980 — нет. Для заданного натурального числа N требуется найти ближайшее к нему двоякое число, не меньшее заданного.
#include <iostream>
#include <set>
using namespace std;
bool twice(unsigned n) {
set<unsigned> box;
do box.insert(n % 10); while (n /= 10);
return box.size() == 2;
}
unsigned result(unsigned n) {
while (!twice(++n)) { ; }
return n;
}
int main() {
cout << ">>> ";
unsigned n;
cin >> n;
cout << result(n) << endl;
system("pause");
}
#include <set>
using namespace std;
bool twice(unsigned n) {
set<unsigned> box;
do box.insert(n % 10); while (n /= 10);
return box.size() == 2;
}
unsigned result(unsigned n) {
while (!twice(++n)) { ; }
return n;
}
int main() {
cout << ">>> ";
unsigned n;
cin >> n;
cout << result(n) << endl;
system("pause");
}
Можно тупо перебирать, пока не наткнешься на такое число. Если всходные данные в пределах сотен тысяч, то такой подход даже обеспечит вменяемое время работы
https://pastebin.com/5QWvAJs1
#include < iostream >
#include < windows.h >
#include < vector >
#include < algorithm >
using namespace std;
bool valid(int k);
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
cout << "Введите число N ";
int n;
for (;;)
{
cin >> n;
if (!((int)cin.get() == 10 || cin.rdbuf()->in_avail() == 0) || !cin || n < 0)
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '\n');
cout << "Ошибка при вводе. Повторите" << endl;
}
else
{
break;
}
}
for (;;++n)
{
if (valid(n))
{
cout << n << endl;
break;
}
}
system("pause");
}
bool valid(int k)
{
vector < int > v;
for (; k > 0;)
{
v.push_back(k % 10);
k /= 10;
}
sort(v.begin(), v.end());
int old = v[0];
unsigned f = 1;
for (auto t : v)
{
if (t != old)
{
++f;
}
old = t;
}
if (f <= 2)
return true;
else
return false;
}

#include < iostream >
#include < windows.h >
#include < vector >
#include < algorithm >
using namespace std;
bool valid(int k);
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
cout << "Введите число N ";
int n;
for (;;)
{
cin >> n;
if (!((int)cin.get() == 10 || cin.rdbuf()->in_avail() == 0) || !cin || n < 0)
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '\n');
cout << "Ошибка при вводе. Повторите" << endl;
}
else
{
break;
}
}
for (;;++n)
{
if (valid(n))
{
cout << n << endl;
break;
}
}
system("pause");
}
bool valid(int k)
{
vector < int > v;
for (; k > 0;)
{
v.push_back(k % 10);
k /= 10;
}
sort(v.begin(), v.end());
int old = v[0];
unsigned f = 1;
for (auto t : v)
{
if (t != old)
{
++f;
}
old = t;
}
if (f <= 2)
return true;
else
return false;
}

Похожие вопросы
- Почему язык СИ такой сложный?
- Как на языке программирования си сделать, чтобы при вводе полного бреда программа не поломалась?
- Программирование на языке СИ с использованием подпрограммы-функции
- Программирование на языке Си. Нужна небольшая помощь.
- какую программу лучше использовать для программирования на языке Си?
- Вопросы по языку СИ
- Язык программирования Си
- Язык Си. Читаю K&R (книга автора языка с примерами). Упражнение 1.10
- Функции в языке СИ
- Кто знает язык Си? ПОМОГИТЕ ПОЖАЛУЙСТА!!!