Я получаю два номера. Первое натуральное число n и второе n-значное число. n диапазон - 1<=n<=50000
. Проблема в том, как я могу сделать n * n
на больших числах, например, 49000
цифр. Я пытался сделать это на строке, тогда у меня есть массив с каждой цифрой, но что тогда? Записать функцию, которая умножает n * n на строку? У меня не было идеи, как начать. Есть идеи?Проверьте, является ли номер автоморфным
EDIT Я проверяю, является ли номер automorphic
, но как отредактировать его для работы с цифрами до 50000
цифр?
#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
unsigned int n, m = 10, a, b;
cin >> n;
b = m;
while (n > b) {
b *= m;
}
a = (n * n) % b;
if (a == n)
cout << "OK";
else
cout << "NO";
return 0;
}
Напишите код для своей домашней работы –
Для тех, кто не знает, [автоморфный номер] (http://en.wikipedia.org/wiki/Automorphic_number) - это число, квадрат которого «заканчивается» теми же цифрами, что и сам номер. – Jarod42
Я написал программу, которая проверяет, является ли число автоморфным, но работает только, например, для long int. Есть ли тип, который может хранить 50000 цифр? – user2948474