大意:判断一个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;
}

 

 

posted on 2012-10-19 20:20  有间博客  阅读(170)  评论(0编辑  收藏  举报