Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这个会容易看些

Posted by frkstyc at 2005-12-17 18:57:01
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator