负二进制转换
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Problem Description
QAQ学长对于现在大家普遍学习的C语言、Java语言等等很是不屑,他认为二进制指令才是最优美的语言;苦苦思考哲学的QAQ学长
已经不满足正二进制了,他现在研究的是负二进制,他给你一串负二进制表示的编码,希望你告诉他这串负二进制表示的十进制数是
多少。
已经不满足正二进制了,他现在研究的是负二进制,他给你一串负二进制表示的编码,希望你告诉他这串负二进制表示的十进制数是
多少。
Input
Output
Sample Input
1011 001101001
Sample Output
-3 220 Hint: 对于第一组样例 ans = 1*(-2)^0 + 0*(-2)^1 + 1*(-2)^2 + 1*(-2)^3 = -3
水题,直接签到。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int b[31]; 6 char s[31]; 7 8 int main(){ 9 10 b[0] = 1; 11 for (int i = 1; i <= 22; ++i) b[i] = b[i - 1] * (-2); 12 13 while (~scanf("%s", s)){ 14 int ans = 0; 15 for (int i = 0; i < strlen(s); ++i) 16 ans += ((int)s[i] - 48) * b[i]; 17 18 printf("%d\n", ans); 19 } 20 21 22 23 return 0; 24 25 }