查看文章 |
TOj(10.60.101.7) 10000 题目解题报告(续)
2008-06-26 19:59
(5)以上时间肯定要快一些了但是在一K内存1K金的年代,148KB的内存显然是难以忍受的,多方询问打探,终于能减少一些内存了(变为了136K!!): int main() { __asm {
push esi
mov eax, fs:0x30;
mov eax, [eax + 0x0c]
mov esi, [eax + 0x1c]
lodsd
mov eax, [eax + 8]
mov kernel32Base, eax
pop esi
}
ReadFile = GetFunctionByName(kernel32Base, "ReadFile", 8);
WriteFile = GetFunctionByName(kernel32Base, "WriteFile", 9);
GetStdHandle = GetFunctionByName(kernel32Base, "GetStdHandle", 12);
ReadFile(GetStdHandle(STD_INPUT_HANDLE), in, 10, &len, NULL);
if (in[1] == ' ') {
out[1] += in[0] - '0';
i = 2;
} else {
out[0] += in[0] - '0';
i = 3;
}
if (in[i + 1] < '0')
out[1] += in[i] - '0';
else out[0] += in[i] - '0';
if (out[1] >= 10) {
out[1] -= 10;
out[0]++;
}
out[0] += '0';
out[1] += '0';
if (out[0] == '0')
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), out + 1, 3, &len, NULL);
else WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), out, 4, &len, NULL);
}
|
最近读者: