登 录
//看不懂题目,百度看到题意后做: //题目大意:给你一个字符串,每个字符占一个字节(即256进制数), //在后面加两个字节,使得其模34943余数为0 //from:http://iamhuangguan.blog.163.com/blog/static/124497319201010118113595 //输出你要加的数,十六进制输出 #include <iostream> #include <string> using namespace std; #define MOD 34943 string s; int main() { while(getline(cin, s)) { if(s.length() == 0) { cout << "00 00" << endl; continue; } if(s[0] == '#') break; long long ans = 0; //悲剧,原来声明int贡献了一次WA for(int i = 0; i < s.length(); i++) ans = ((ans << 8) + s[i]) % MOD; ans = (ans << 16) % MOD; //需要加的数为34943 - ans,转为16进制; ans = MOD - ans; s = "0000"; int i = 3; while(ans != 0) { int res = ans % 16; if(res < 10) s[i--] = res + '0'; else s[i--] = res - 10 + 'A'; ans /= 16; } cout << s[0] << s[1] << " " << s[2] << s[3] << endl; } return 0; }
抱歉!评论已关闭.