Возможно, вы знакомы с представлением целых чисел со знаком. Это бинарное целочисленное представление, наиболее широко используемое сегодня. Менее известны некоторые другие предложения для двоичного целочисленного представления, включая базу -2. Base -2 разделяет арифметические удобства двухкомпонента и, возможно, проще описать. (См. http://en.wikipedia.org/wiki/Signed_number_representations)Преобразование из двоичного дополнения в десятичное.
Пример: 1011 - 1 * (- 2)^3 + 0 * (- 2)^2 + 1 * (- 2)^1 + 1 * (- 2) * 0 = - 8 + 0 + -2 + 1 = -9
Входной
Первое число Т (от 1 до 100) это количество целых чисел для преобразования из базы -2 основывать 10.
следующие T-номера - это базовые -2 числа (от 1 до 15 цифр).
Примечание: номера могут быть дополнены слева с помощью 0s.
Выход
Выход подписанный основание 10 представление чисел, разделенных пробелами.
Следующий мой код на C++; он в значительной степени просто использует метод в приведенном выше примере с 1011. Он отлично работает в моих собственных тестовых случаях, но когда я отправляю его в онлайн-судье, он дал неверный ответ. Я думаю, что это может быть переполнение. Любое предложение о том, как улучшить код. Спасибо!
#include<iostream>
#include<math.h>
using namespace std;
long long int convert (long long int base, long long int num){
long long int exp=0;
long long int output=0;
while (num != 0){
long long int digit = num - 10*int(num/10);
output += digit * pow(base, exp);
exp++;
num = int(num/10);
}
return output;
}
int main(){
int cases;
cin >> cases;
long long int input;
long long int base = -2;
cin >> input;
cout << convert(base, input);
for (int i=1; i< cases; i++){
cin >> input;
cout << " " << convert(base, input);
}
return 0;
}
George: Я не понимаю. Я должен преобразовать входные данные от основания -2 к основанию 10. Что случилось с печатью числа (в базе 10)? – user3213711
Может быть, я не понял, что нужно. Не могли бы вы объяснить мне, какой вклад у вас есть и какой результат вам нужен? –
@George: это автоматическое упражнение по программированию. Помимо описания в вопросе, вы не знаете, что такое вход. Ваша программа запускается на какой-либо машине, которую вы не контролируете. –