Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

RGB7290 - Кенгуру

Супер кенгуру шулуун зам дээр баруун болон зүүн тийш гайхамшигт харайлтууд хийдэг. Анхны харайлт 1м, 2 дахь харайлт 2м, 3 дахь харайлт 4м гэх мэтээр харайлт бүр нь өмнөх харайлтаасаа 2 дахин урт харайлт хийдэг.  Эхлэлийн байрлалаас баруун тийш d зайд хамгийн багадаа хэдэн харайлтаар очих вэ. Мөн харайлтыг дүрсэлнэ үү. 

Input

Натурал тоо d өгөгдөнө. 0<d<231-1.

Output

d зайд харайж очих боломжгүй бол Impossible гэж хэвлэнэ.

d зайд харайж очих боломжтой бол эхний мөрөнд харайлтын тоо, дараагийн мөрөнд харайлтуудыг нэмэх эсвэл хасах тэмдэгтэйгээр сул зайгүйгээр залган хэвлэнэ. Баруун тийш харайлт хийсэн бол + тэмдэгтэйгээр, зүүн тийш харайлт хийсэн үед - тэмдэгтэйгээр харайлтыг бичнэ.

Тухайлбал 3 дахь харайлтыг зүүн тийш хийсэн байвал -4 гэж тэмдэглэнэ. Жишээнүүдийг сайн ажиглана уу. 

Example

Input 1 :

16

Output 1 :

Impossible

Input 2 :

17

Output 2 :

5

-1-2-4+8+16

Input 3 :

55

Output 3 :

6

+1+2-4+8+16+32

6
1+2-4+8+16+32

Нэмсэн:Bataa
Огноо:2013-04-07
Хугацааны хязгаарлалт:1s
Эх кодын хэмжээний хязгаарлалт:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Програмчлалын хэлүүд:ADA95 ASM32 BASH BF C NCSHARP CSHARP C++ 4.3.2 CPP C99 CLPS LISP sbcl LISP clisp D ERL FORTRAN HASK ICON ICK JAVA JS-RHINO JULIA LUA NEM NICE OCAML PAS-GPC PAS-FPC PERL PHP PIKE PRLG-swi PYTHON PYPY3 PYTHON3 RUBY SCALA SCM guile ST TCL WHITESPACE
Эх сурвалж:ОХУ олимпиад, анхан

hide comments
2023-12-06 16:58:52
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, oron = 0, k, uld, zreg, a[100], uld1, k1;
cin >> n;
k = abs(n);
k1 = abs(n);
if(n % 2 == 0){
cout << "Impossible";
return 0;
}
while(k > 0){
k /= 2;
oron++;
}
cout << oron << endl;
uld = pow(2, oron) - 1 - k1;
uld = abs(uld) / 2;
for(int i = 0; i < oron; i++)
a[i] = pow(2 , i);
while(uld != 0){
zreg = 0;
uld1 = uld;
while(uld1 != 1){
uld1 /= 2;
zreg++;
}
uld -= a[zreg];
a[zreg] *= -1;
}
if(n > 0){
for(int i = 0; i < oron; i++){
if(a[i] > 0){
cout << "+";
}
cout << a[i];
}
}
else{
for(int i = 0; i < oron; i++){
a[i] *= -1;
if(a[i] > 0){
cout << "+";
}
cout << a[i];
}
}
return 0;
} duu nar
2021-10-25 14:53:38
heden udaa usrehiig ni hevleh bsimu XD
daanch tiim bhaa, turuunees hoish oroldood 2 bolohgu bsiin XD
2021-10-20 13:20:10
manlai minii hugshin bolio
2020-05-06 13:22:55
LOSERS

Last edit: 2020-05-06 13:23:41
2019-11-10 07:20:39
loser


Last edit: 2020-05-06 13:23:19
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.