#include <iostream>
#include <algorithm>
using namespace std;
string func(int n, int k){
string s;
while(n > 0){
if(n % k < 10) s += (n % k) + '0';
else s += (n % k - 10) + 'A';
n /= k;
}
reverse(s.begin(), s.end());
return s;
}
int main() {
int N;
cin >> N;
int a[3] = {2, 8, 16};
for(auto &i : a)
cout << "Number " << N << " in the notation with a base " << i << " equals to " << func(N, i) << "\n";
}
55:5=11
365:11≈33(34) берём "34", чтобы перехлестнуть 365.
Так как 11-ый член является замыкающим (перехлёстывающим 365), тогда смотрим по ближайшим:
34*10=340 (340+34=374) - подходит, но это не максимум!
365 mod 10= 36, а это значит, что последующий член будет больше 365, а именно 395.
В задании сказано, что d должно быть максимальным, а "34" - это допустимое, но не максимально число, удовлетворяющее условию, даже минимальное (по результату).
Проверка:
34*11=374, значит, когда на экране выведется s:=340, n:=50, то, зайдя по следующему циклу, получится, что s:= 374, n:=55. На следующий цикл программа не пойдёт.
ответ: d=34.
m=0; //кол-во отриц. элементов
proizv=1; //произвед отриц элементов
for(i=0; i<9; i++)
{
if (b[i]<0)
{ m++;
proizv=proizv*b[i];
}
}