Top.Mail.Ru
Ответы

Код на С++ работает не так, как задумано.

Вкратце - код ищет автоморфные числа от 1 до указанного значения, которое вводится пользователем:
#include
#include
#include

using namespace std;

int main()
{
int maxnum, numsize;
cin >> maxnum;
ostringstream g;
for (int i = 1; i < maxnum; i++) {
g << i;
numsize = g.str().size();
int a = pow(i, 2);
int b = pow(10, numsize);
if (a % b == i) {
cout << i << " * " << i << " = " << i * i << endl;
}
}
return 0;
}
Проблемма в том, что он останавливается на единице, хотя если вместо b вручную подставить степень десятки, то он спокойно выводит числа. Использую GNU GCC Compiler, кодю в Code;;Blocks 13.12.
Помогите, пожалуйста, не могу допереть, в чем ошибка и почему все так выходит.

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

cout << ">>> ";
long n;
cin >> n;
cout << 1;
for (long long i = 1; i < n; ++i) {
if (5 == i % 10 || 6 == i % 10) {
const auto x = static_cast<long>(pow(10, 1 + static_cast<long>(log10(i))));
if (i * i % x == i) cout << ' ' << i;
}
}

Аватар пользователя
Высший разум
7лет

А что за среда симпотяшная?

Аватар пользователя
Оракул
7лет

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

int main()
{
int maxnum, numsize;
cin >> maxnum;
string g;
char str[25];

for (int i = 1; i < maxnum; i++)
{
_itoa_s(i, str, 25, 10);
g = str;
numsize = g.size();
int a = pow(i, 2);
int b = pow(10, numsize);
if (a % b == i)
{
cout << i << " * " << i << " = " << i * i << endl;
}
}
return 0;
}