位操作
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 8964   Accepted: 3581

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

做完这个题目AC的时候,再看其它人discuss的时候。哭的心都有了。自己竟然模拟做。。。

各种WA,RE都搞出来了。

。。受不了了。代码各种幼稚我也不优化了。。。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
using namespace std; int wei[10000]; void change_to(char R[10000])
{
int i,j;
for(i=7;i>=0;i--)
{
int temp=R[i];
for(j=0;j<=3;j++)
{
wei[(7-i)*4+j]=temp&1;
temp=temp>>1;
}
}
} void change(int x,int y)
{
if(x>=0&&x<=31)
wei[x]=0;
if(y>=2)
{
wei[y]=1;
wei[y-1]=1;
wei[y-2]=0;
}
else if(y==1)
{
wei[y]=1;
wei[y-1]=1;
}
else
wei[y]=1; } void solve()
{
char temp;
int i;
int flag=1;
for(i=31;i>=3;i=i-4)
{
int sum= wei[i]*8 + wei[i-1]*4 + wei[i-2]*2 + wei[i-3];
if(sum<=9 && sum>=0)
{
temp=sum+'0';
}
else
{
temp=sum+87;
}
if(temp=='0'&&flag==1)
{
}
else
{
flag=0;
cout<<temp;
}
}
} int main()
{ char R[10000],temp_R[10000];
char temp;
int x,y,i=0,j,k; memset(R,0,sizeof(R)); while(scanf("%c",&temp_R[i]),temp_R[i++]!=',');
i--;
j = 8-i;
k = 0;
for(i=j;i<8;i++)
{
R[i] = temp_R[k++];
}
for(x=0;x<8;x++)
{
if(R[x]>='0'&&R[x]<='9')
R[x]=R[x]-'0';
else if(R[x]>=97)
R[x]=R[x]-'a'+10;
}
scanf("%d,%d",&x,&y); change_to(R);
change(x,y);
solve(); cout<<endl; return 0;
}

话说位运算真是简单啊。%x真是方便啊,别总认准%d啊。

。

。

代码:

#include <iostream>
#include <cstdio> using namespace std; int main() {
unsigned int r, x, y; while(scanf_s("%x,%d,%d", &r, &x, &y) == 3) {
r = r & (~(1<<x));//将r的x位置为0
r = r | (1<<y);//将r的y位置为1
r = r | (1<<(y-1));
r = r & (~(1<<y-2));
printf("%x\n", r);
} return 0;
}

POJ 3748:位操作的更多相关文章

  1. poj 3748 位操作

    位操作 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8856   Accepted: 3535 Description 假 ...

  2. POJ - 3652 Persistent Bits

    “模拟”类型,题型容易,使用bitset库对二进制逐位操作,初始化.十进制转二进制(unsigned int).位操作. POJ - 3652 Persistent Bits Time Limit:  ...

  3. poj 1753 Flip Game 枚举(bfs+状态压缩)

    题目:http://poj.org/problem?id=1753 因为粗心错了好多次……,尤其是把1<<15当成了65535: 参考博客:http://www.cnblogs.com/k ...

  4. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  5. POJ 1321 棋盘问题(状态压缩DP)

    不总结的话, 同一个地方会 WA 到死 思路: 状态压缩 DP. 1. s 表示压缩状态, 若第 i 列放了棋子, 那么该列置 1, 否则该列置 0. 假如 s = 3(0x011) 那么表示棋盘的第 ...

  6. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  7. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  8. POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22286 ...

  9. POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Descr ...

随机推荐

  1. [转]Linux下paste命令详解

    转自:http://blog.csdn.net/andy572633/article/details/7214126 paste单词意思是粘贴.该命令主要用来将多个文件的内容合并,与cut命令完成的功 ...

  2. NHibernate系列学习(二)-使用sql和hql以及linq

    1.本文主要介绍了NH的三种查询方式 2.界面查看 3.代码架构 4.代码详情 namespace KimismeDemo { public partial class Form2 : Form { ...

  3. phpstorm如何配置xdebug?(hpStudy+PhpStorm+XDebug配置)

    xdebug是什么? 初次接触,反复试了几次终于把这个xdebug给搞清楚了,类似于前端的控制台这样的东西,可以根据断点展示我们想要看的数据. 如何配置xdebug? 配置前说明: 1.phpStud ...

  4. fcc 响应式框架Bootstrap 练习1

    需要通过添加下列代码到你的HTML开头来将Bootstrap添加到任意应用中: <link rel="stylesheet" href="//cdn.bootcss ...

  5. MySQL数据库的三大范式定义,作用—------你所期待的最佳答案

    第一范式:确保每列的原子性. 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式. 例如:顾客表(姓名.编号.地址.……)其中"地址"列还可 ...

  6. CSS (层叠样式表)

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS不仅可以静态 ...

  7. include和require区别

    1.  include()执行的时候需要引用的文件每次都要进行读取评估; require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句) 可以看出若有包 ...

  8. js 简单模板引擎

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  9. golang实现高阶函数之filter

    package main import "fmt" type student struct{ name string grade int8 } func filter(stu [] ...

  10. 【codeforces 801D】Volatile Kite

    [题目链接]:http://codeforces.com/contest/801/problem/D [题意] 给你一个凸多边形的n个点; 然后允许你将每个点移动到距离不超过D的范围内; 要求无论如何 ...