大意:判断一个256进制数增加2个字节(16位)是否可以被32493整除。说实话,真难看懂题意。
CODE:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <ctype.h>
using namespace std;
#define MAXN 1050
char str[MAXN];
int main()
{
char save[8];
long long res = 0, ans = 0;
while(gets(str))
{
if(str[0] == '#') break;
int len = strlen(str);
ans = res = 0;
for(int i = 0; i < len; i++)
{
ans = (ans*256 + str[i]) % 34943;
}
ans = (ans<<16) % 34943;
res = ans? 34943-ans:0;
sprintf(save, "%04x", (int)res); //转换为16进制数,如果不足4位补齐。
for(int i = 0; i < 4; i++)
{
if(isalpha(save[i]))
{
save[i] = toupper(save[i]);
}
}
printf("%c%c %c%c\n", save[0], save[1], save[2], save[3]);
}
return 0;
}
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <ctype.h>
using namespace std;
#define MAXN 1050
char str[MAXN];
int main()
{
char save[8];
long long res = 0, ans = 0;
while(gets(str))
{
if(str[0] == '#') break;
int len = strlen(str);
ans = res = 0;
for(int i = 0; i < len; i++)
{
ans = (ans*256 + str[i]) % 34943;
}
ans = (ans<<16) % 34943;
res = ans? 34943-ans:0;
sprintf(save, "%04x", (int)res); //转换为16进制数,如果不足4位补齐。
for(int i = 0; i < 4; i++)
{
if(isalpha(save[i]))
{
save[i] = toupper(save[i]);
}
}
printf("%c%c %c%c\n", save[0], save[1], save[2], save[3]);
}
return 0;
}