| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这个会容易看些In Reply To:二分C,然后判断C-A=?B。。。 Posted by:clover at 2005-12-17 18:43:05 #include <stdio.h>
#define BIT(x, n) (((x) >> (n)) & 1u)
#define BIT1(n) (1u << (n))
#define SET(x, n, b) (((x) & ~BIT1(n)) | ((b) << (n)))
#define MASK(n, m) (((1u << (m)) - 1) << (n))
#define ROR(x, n, m) (((x) & ~MASK(n, m)) | (BIT(x, n) << ((n) + (m) - 1)) | (((x) & MASK((n) + 1, (m) - 1)) >> 1))
#define ADD(x) \
do\
{\
(x) = ROR(x, 0, 8);\
(x) = ROR(x, 16, 8);\
(x) = SET(x, 25, (BIT(x, 7) & BIT(x, 23)) | (BIT(x, 7) & BIT(x, 24)) | (BIT(x, 23) & BIT(x, 24)));\
(x) = SET(x, 7, BIT(x, 7) ^ BIT(x, 23) ^ BIT(x, 24));\
(x) = SET(x, 24, BIT(x, 25));\
}\
while(0)
#define ADD8(x) \
do\
{\
ADD(x);\
ADD(x);\
ADD(x);\
ADD(x);\
ADD(x);\
ADD(x);\
ADD(x);\
ADD(x);\
}\
while(0)
int main(void)
{
unsigned int a;
scanf("%hu %hu", (unsigned short int*)&a, (unsigned short int*)&a + 1);
ADD8(a);
printf("%u\n", (unsigned int)*(unsigned char*)&a);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator