给定一个长度为 32 位的二进制数 n,请你计算并输出 n+1 和 n+3 的二进制表示结果。
注意,结果不能忽略前导 0(不够 32 位的用前导 0 补足 32 位,超过 32 位的不用补前导 0)。
输入格式 第一行包含整数 T,表示共有 T 组测试数据。每组数据占一行,包含一个长度为 32 的 01 字符串。
输出格式 每组数据输出两行,第一行为 n+1 的二进制表示结果,第二行为 n+3 的二进制表示结果。 数据范围 1≤T≤100 输入样例:2 00000000000000000000000000000000 00000000000000000000000000000001输出样例:
00000000000000000000000000000001 00000000000000000000000000000011 00000000000000000000000000000010 00000000000000000000000000000100C++代码:
#include#define pb push_back typedef long long LL; using namespace std; LL POW(int y) { LL res = 1; for(int i = 1; i <= y; i ++) res <<= 1; return res; } string Trans(LL x) { LL tmp = x; vector s; while(tmp != 0) { s.pb(tmp % 2); tmp /= 2; } string s1; for(int i = (int)s.size() - 1; i >= 0; i --) s1 += (s[i] + '0'); string s2; int res = 32 - s1.length(); for(int i = 0; i < res; i ++) s2 += '0'; string ans = s2 + s1; return ans; } LL sol(string s) { LL res = 0; for(int i = 0; i < 32; i ++) { int t = s[i] - '0'; res += (LL)t * POW(31 - i); } return res; } int main() { ios::sync_with_stdio(false); cin.tie(0); int tt; cin >> tt; while(tt --) { string s; cin >> s; if(s == "11111111111111111111111111111111") { cout << "100000000000000000000000000000000" << 'n'; cout << "100000000000000000000000000000010" << 'n'; } else if(s == "11111111111111111111111111111110") { cout << "11111111111111111111111111111111" << 'n'; cout << "100000000000000000000000000000001" << 'n'; } else if(s == "11111111111111111111111111111101") { cout << "11111111111111111111111111111110" << 'n'; cout << "100000000000000000000000000000000" << 'n'; } else { LL x = sol(s); string s1 = Trans(x + 1); string s3 = Trans(x + 3); cout << s1 << 'n'; cout << s3 << 'n'; } } return 0; }



