原 POJ 3748 位操作 解題報告

2022-07-04 06:57:09 字數 1870 閱讀 2511

方法:給定16進製制32bit數,將其第x位置0,第y位開始的三位置成110

注意考慮待置位數中有a~f的情況

description

假設你工作在乙個32位的機器上,你需要將某乙個外設暫存器的第x位設定成0(最低位為第0位,最高位為第31位),將第y位開始的連續三位設定成110(從高位到低位的順序),而其他位保持不變。對給定的暫存器值r,及x,y,程式設計計算更改後的暫存器值r。

input

僅一行,包括r,x,y,以逗號","分隔,r為16進製表示的32位整數,x,y在0-31之間且y>=3,(y-x)的絕對值》=3,保證兩次置位不會重合

output

更改後的暫存器值r(16進製制輸出)

sample input

12345678,0,3

sample output

1234567c

#include

2:

#include

3:

#include

4:
5:

using

namespace std ;

6:
7:

//a~f : 10~15

8:

int alparrup[6]= ;

9:

//a~f : 10~15

10:

int alparrlow[6]= ;

11:
12:

void run3748()

13:
46:
47:

//將x轉成數字

48:     len = xstr.size();
49:

if(len==1)

50:         x = xstr[0]-'0' ;
51:

else

if(len==2)

52:         x = (xstr[1]-'0')+(xstr[0]-'0')*10 ;
53:
54:

//將y轉成數字

55:     len = ystr.size();
56:

if(len==1)

57:         y = ystr[0]-'0' ;
58:

else

if(len==2)

59:         y = (ystr[1]-'0')+(ystr[0]-'0')*10 ;
60:
61:

//置位

62:     tmp1 = 0xffffffff ;
63:     tmp0 = 0x00000000 ;
64:
65:

//對第x位置0

66:

//即將num的第x位「與」0,在做「與」時若保證其他位不變,則需要「與」1

67:     num &= (tmp1 ^ (1<68:
69:

//對第y、y-1位置1

70:     num |= (tmp0 ^ (3<<(y-1)) ) ;
71:

//對第y-2位置0

72:     num &= (tmp1 ^ (1<<(y-2)) ) ;
73:
74:

//輸出16進製表示用std::hex

75:     cout<76: }

原 poj 2715 基礎題 獎學金

注意輸出 練習sort 與 scanf scanf會讀入空格字元!include include include include using namespace std define cdebbug 全域性資料 struct scholar bool cmp const scholar a,cons...

poj 3695 Rectangles 容斥原理

在容斥原理題單裡看到這個題,第一想法肯定是掃瞄線啊。但一看題單分析,還真是容斥。矩形相交的圖形和文氏圖差不多。然後dfs容斥就好了 題單裡第四題 include include include using namespace std struct rec rec rec 30 int nums 30...