UVA – 575 – Skew Binary Code

8:29 PM | , , , , , , ,



There is a problem on UVA online judge which called Skew Binary Code Problem. When a number is expressed in decimal, the k-th digit represents a multiple of 10k. (Digits are numbered from right to left, where the least significant digit is number 0.) For example,

\begin{displaymath}81307_{10} = 8 \times 10^4 + 1 \times 10^3 + 3 \times 10^2 + ...
...mes 10^1 +
7 \times 10 0 = 80000 + 1000 + 300 + 0 + 7
= 81307.
\end{displaymath}


When a number is expressed in binary, the k-th digit represents a multiple of 2k. For example,

\begin{displaymath}10011_2 = 1 \times 2^4 + 0 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 +
1 \times 2^0 = 16 + 0 + 0 + 2 + 1 = 19.
\end{displaymath}


In skew binary, the k-th digit represents a multiple of 2k+1 - 1. The only possible digits are 0 and 1, except that the least-significant nonzero digit can be a 2. For example,

\begin{displaymath}10120_{skew} = 1 \times (2^5 - 1) + 0 \times (2^4-1) + 1 \tim...
...2 \times (2^2-1) + 0 \times (2^1-1)
= 31 + 0 + 7 + 6 + 0 = 44.
\end{displaymath}


The first 10 numbers in skew binary are 0, 1, 2, 10, 11, 12, 20, 100, 101, and 102. (Skew binary is useful in some applications because it is possible to add 1 with at most one carry. However, this has nothing to do with the current problem.)

Input 

The input file contains one or more lines, each of which contains an integer n. If n = 0 it signals the end of the input, and otherwise n is a nonnegative integer in skew binary.

Output 

For each number, output the decimal equivalent. The decimal value of n will be at most 231 - 1 = 2147483647.

Sample Input 

10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0

Sample Output 

44
2147483646
3
2147483647
4
7
1041110737



Code with java programming


import java.util.Scanner;
public class BinarySkew {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        String bil="";
        while(!(bil.equalsIgnoreCase("0"))){
            bil=s.next();
            int hasil=0;
            for (int i = 0; i < bil.length(); i++) {
                hasil+=(Integer.parseInt(bil.substring(i, i+1))*(Math.pow(2, bil.length()-i)-1));
            }
            System.out.println(hasil);
        }
    }
}



Output

















3 comments:

Anonymous said...

Great...

herber m. fowler said...

“I had an extremely informative session today detailing how Bitcoin works, how to purchase it and how to secure it. Mr William came out for me simple strategies and important information to get me started so I can secure the best possible investment opportunity. There is a lot to learn, however, The Mr William provides valuable information on their website, and many other avenues to help stay informed and up-to-date with this enormous opportunity. ”Thanks very much Mr William contact her email leewilliam664 @ gmail .com or Whatsapp number +14086012169

Thomas wilson said...

Trading Cyptocurrency is a good thing. i lost a lot before I got to where I am today. if you need assistance on how to trade and recover the money you have lost from your Cyptocurrency broker email me to get the new amazing strategy? If you are having problems withdrawing your fund from your Cyptocurrency trade broker even when you were given a bonus, just contact me, i have worked with a Cyptocurrency broker for 3years, i have helped a lot of people and i wont stop until i have helped as many as possible,here is my email flanmustelafu@gmail.com

Post a Comment

Please leave a comment