Воть
Объяснение:
Это ж всё брутфорс, это ж несерьезно :)
На самом деле, конечно, перебор здесь вполне подходит, и можно дать ему границы сразу — по количеству цифр, по максимальной цифре. Но есть же и аналитический метод.
350214х = 11892410
Это означает, что
3x5 + 5x4 + 0x3 + 2x2 + 1x + 4 = 11892410
или
3x5 + 5x4 + 2x2 + x – 118920 = 0
Классический многочлен пятой степени. И теперь нужно решить полиномиальное уравнение. По основной теореме алгебры у него будет пять комплексных корней, нас, правда, интересует только действительный, хорошо бы положительный, и хорошо бы целый :)
Из теоремы Абеля-Руффини известно, что аналитически мы такое уравнение не решим в общем случае, но я бы даже и пробовать не стал: на то придуманы численные методы, которых всяких есть многатыщ — выбрать можно по вкусу, начиная хоть с метода товарища Ньютона. Решаем, и получаем:
x = 8
Хорошо и красиво. Ну можете еще добить преподавателя комплексными корнями, сказав, что это же число записывается точно так же в системе счисления с основанием (-7.07949 - 4.865i) :)
поделиться улучшить этот ответ отслеживать
ответ дан
17 сен '11 в 11:58
Ali
2,109●88 серебряных знаков●1010 бронзовых знаков изменён
17 сен '11 в 12:17
получается только перебор? очень жалко что другого метода нет...))а "Это ж всё брутфорс, это ж несерьезно :)" - это как понять? чет не вкурил к чему это! ))) ну ладно + – Евгений536 17 сен '11 в 12:09
1
Я к тому, что другие ответы были про перебор. И это правильно, вообще-то, потому как перебрать десяток оснований легче, чем решить полином пятой степени. – Ali 17 сен '11 в 12:10
2
Не брутфорс, можно сделать бинарный поиск по X! :) – Михаил М 19 авг '13 в 14:27
добавить комментарий
голос «за»
4
голос «против»
Что бы перевести число с какой то системы счисления с основой Х в десятичную, нужно делать так: 1) начальная сумма 0 2) текущая цифра - самая первая 3) текущую сумму умножаем на основу Х 4) добавляем текущую цифру к сумме. 5) если справа ещё есть цифры - к пункту 3 иначе выход Так как вручную проверять все это лень, пишется небольшая программа, к примеру на питоне
def r(x):
return (((((3 * x + 5) * x + 0) * x + 2) * x + 1) * x + 4)
for i in range(6,10):
print i, r(i)
Начинаем с 6, так как все цифры в заданном числе точно меньше 6 и это будет минимально возможная основа. А верхняя 9, так как "визуально" число в системе счисления Х больше его записи в десятичной форме.
и конечный ответ - 8.
ответ: Только не точь в точь, а то за это бан)
#include <iostream>
#include <vector>
#include <cstdint>
using namespace std; template <class T>
istream& operator>>(istream &in, vector<T> &vec) { for (auto &it : vec) in >> it; return in;
}
template <class T>
ostream& operator<<(ostream &out, vector<T> &vec) { for (auto &it : vec) out << it << ' '; return out;
}
template <class T, class U>
istream& operator>>(istream &in, pair<T, U> &pair){
in >> pair.first >> pair.second; return in;
}
template <class T, class U>
ostream& operator<<(ostream &out, pair<T, U> &pair) { out << pair.first << ' ' << pair.second; return out;
}
signed main(void) { int32_t n; cin >> n; vector<vector<int64_t>> a(n, vector<int64_t>(n,-1));
int64_t x = 0, y = n/2;
a[x][y] = 1;
for(int32_t i = 2; i <= n*n; ++i) {
int _x = x, _y = y;
if(!x) {
x = n-1;
}else {
x-=1;
}
if(y == n-1){
y = 0;
}else {
y++;
}
if(a[x][y] != -1){
x= _x, y = _y;
while(a[x][y] != -1){
if(x == n-1){
x = 0;
}else{
x++;
}
}
}
a[x][y] = i;
}
for(int32_t i = 0; i < n; ++i){
cout << a[i] << '\n';
}
return 0;
}
У вас есть 4-ая? Я щас создам вопрос!
Если , оцени)
Поделитесь своими знаниями, ответьте на вопрос:
1)переведите четверичное число 2310(четверичную систему сч.) в десятичную систему счисления 2)переведите семеричное число 116(семиричную систему сч.) в десятичную систему счисления 3)переведите десятичное число 26(в десятичную систему сч.) в систему счисления с основанием 7