NBUT 1450 Blitzcrank
来源:互联网 发布:模拟人生4网络人格 编辑:程序博客网 时间:2024/05/16 06:19
[1450] Blitzcrank
- 时间限制: 1000 ms 内存限制: 65535 K
- 问题描述
- Blitzcrank is a robot.
There are some pretty good registers(寄存器) in Blitzcrank's body.
There are some instructions about register A and register B:
1.ADD A, B means a += b. The machine code is 80 AF BF.
2.ADD A, A means a += a. The machine code is F0 AF.
3.ADD B, B means b += b. The machine code is F0 BF.
4.ADD B, A means b += a. The machine code is 80 BF AF.
Now give you the values in register A and register B and some machine codes. You should calculate out the final value in register A and register B after operating the machine code.
- 输入
- The frist line contains an integer T, means there are T test cases.
For each test case, the first line contains two integers means the initial value of the register A and the register B in hexadecimal(十六进制).
The next line contains a series of hexadecimal numbers. - 输出
- For each test case, print the register A and register B's value in hexadecimal.
- 样例输入
2A1 B280 AF BF F0 AFB2 B3F0 AF F0 BF
- 样例输出
2A6 B2164 166
- 提示
The first case's machine codes 80 AF BF F0 AF is composed of ADD A, B and ADD A, A.
- 来源
Monkeyde17
这题目其实挺水的,我写着题的目的主要是想分享一下刚学到的超神string和stringstream的用法。详细介绍请看:http://blog.csdn.net/zhang_xueping/article/details/47846807这题目是说给出两个十六进制的数A和B,通过输入特定字符串进行操作,同样用十六进制输出操作后的A和B。具体操作为:1.当输入“80 AF BF”时,a += b;
2.当输入“F0 AF”时,a += a.
3.当输入“F0 BF”时,b += b.
4.当输入“80 BF AF”时,b += a.
这题主要就是考察字符串的处理。用普通的方法可以很快敲出来:#include<cstring>#include<cstdio>#include<cmath>const int mx=1e6+10;char s[mx];int a,b,l;int main() { int t; scanf("%d",&t); while(t--) { scanf("%X %X",&a,&b); getchar(); gets(s); //由于操作次数不确定,所以用scanf难以控制,则用gets比较方便 l=strlen(s); int i=0; while(i<l) { if(s[i]=='8') { if(s[i+3]=='A' ) a+=b; else if(s[i+3]=='B') b+=a; i+=9; } else if(s[i]=='F') { if(s[i+3]=='A') a+=a; else if(s[i+3]=='B') b+=b; i+=6; } } printf("%X %X\n",a,b); //此处的%x和%X要区分开,用大写输出的字母就是大写,用小写就输出小写字母 } return 0;}
不过这个代码不是我要展示的重点,我觉得特别神奇的是string/*Author:ZXPxxMemory: 268 KBTime: 343 MSLanguage: G++Result: Accepted*/#include<cstring>#include<iostream>#include<sstream>#include<cstdio>using namespace std;stringstream sbuf;int main() { int t; scanf("%d",&t); while(t--) { int A,B; string str,op,a,b; cin>>hex>>A>>B; sbuf.clear(); cin.ignore(); getline(cin,str); sbuf<<str; while(sbuf>>op) { if(op=="80") { sbuf>>a>>b; if(a=="AF") A+=B; else B+=A; } else { sbuf>>a; if(a=="AF") A+=A; else B+=B; } } printf("%X %X\n",A,B); } return 0;}
就像处理整形数据一样,好方便啊……
1 0
- NBUT 1450 Blitzcrank
- NBUT 1450 Blitzcrank
- NBUT 1450
- NBUT
- NBUT
- NBUT
- NBUT
- NBUT
- 【NBUT
- NBUT
- NBUT
- NBUT
- NBUT
- NBUT
- nbut 1475
- NBUT 1481
- NBUT 1552
- NBUT 1477
- Linux四种进程通信机制
- 初中生可以学武汉北大青鸟什么专业课程?学完之后从事什么工作?
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- TCP使用过程
- 以phoneGap作为承载容器是ios会上下滑动
- NBUT 1450 Blitzcrank
- SQL语句练习
- yii2 数据库查询笔记
- HDU - 4126 Genghis Khan the Conqueror(树形DP + 最小生成树)
- python笔记 2
- 使用套接字的四个步骤
- 黑马程序员-JAVA基础之常见API
- MongoDB学习五--MongoDB修改数据文档
- 您疼孙子 得好好的疼