Infernale

Signed Binary Number

Nov 6th, 2018
398
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4.  
  5. int main(){
  6.     char in[33];
  7.     int tc;
  8.     scanf("%d",&tc);
  9.     for(int i=1;i<=tc;i++){
  10.         int index = 0;
  11.         long long res = 0;
  12.         scanf(" %s",in);
  13.         char bin[strlen(in)];
  14.         for(int j=0;j<strlen(in);j++){
  15.             if(in[j]=='1' || in[j]=='0'){
  16.                 bin[index++] = in[j];
  17.             }
  18.             if(in[j]=='('){
  19.                 bin[index++] = '-';
  20.                 j+=3;
  21.             }
  22.         }
  23.         int digs = index-1;
  24.         for(int j=0;j<index;j++){
  25.             if(bin[j]=='1'){
  26.                 res+=pow(2,digs);
  27.             }
  28.             if(bin[j]=='-'){
  29.                 res-=pow(2,digs);
  30.             }
  31.             digs--;
  32.         }
  33.         printf("Case #%d: %lld\n",i,res);
  34.     }
  35.     return 0;
  36. }
Add Comment
Please, Sign In to add comment