• [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.
  • 例子输入
  • 2
    A1 B2
    80 AF BF F0 AF
    B2 B3
    F0 AF F0 BF
  • 例子输出
  • 2A6 B2
    164 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的使用方法。

    这题目是说给出两个十六进制的数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:ZXPxx
    Memory: 268 KB Time: 343 MS
    Language: 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;
    }

    就像处理整形数据一样,好方便啊……

NBUT 1450 Blitzcrank的更多相关文章

  1. NBUT 1457 莫队算法 离散化

    Sona Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Submit Status Practice NBUT 145 ...

  2. ACM: NBUT 1107 盒子游戏 - 简单博弈

     NBUT 1107  盒子游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

  3. ACM: NBUT 1105 多连块拼图 - 水题 - 模拟

    NBUT 1105  多连块拼图 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

  4. ACM: NBUT 1646 Internet of Lights and Switches - 二进制+map+vector

    NBUT 1646 Internet of Lights and Switches Time Limit:5000MS     Memory Limit:65535KB     64bit IO Fo ...

  5. NBUT 1525 Cow Xor(01字典树+前缀思想)

    [1525] Cow Xor 时间限制: 2000 ms 内存限制: 65535 K 问题描述 农民约翰在喂奶牛的时候被另一个问题卡住了.他的所有N(1 <= N <= 100,000)个 ...

  6. NBUT 1186 Get the Width(DFS求树的宽度,水题)

    [1186] Get the Width 时间限制: 1000 ms 内存限制: 65535 K 问题描述 It's an easy problem. I will give you a binary ...

  7. NBUT 1635 Explosion(最小顶点覆盖)

    [1635] Explosion 时间限制: 10000 ms 内存限制: 65535 K 问题描述 there is a country which contains n cities connec ...

  8. NBUT 1602 Mod Three(线段树单点更新区间查询)

    [1602] Mod Three 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Please help me to solve this problem, if so, Liang ...

  9. NBUT 1028 该减肥了(简单递推)

    [1028] 该减肥了 时间限制: 1000 ms 内存限制: 65535 K 问题描述 由于长期缺乏运动,Teacher Xuan发现自己的身材臃肿了许多,于是他想健身,更准确地说是减肥.Teach ...

随机推荐

  1. vba,excel,身份证,照片

    Sub 插入图片() '调整单元格大小,以适应图片大小 功能 插入身份证照片打印 - 正面在单元格d6       反面单元格d10 ActiveSheet.Pictures.Delete '清理过期 ...

  2. laravel如何自定义控制器目录

    默认控制器在App\Http\Controllers目录下,如何自定义目录呢? 首先我们看一下laravel的请求周期 我们看一下服务提供者RouteServicePrivder文件中的一个函数 /* ...

  3. 纯CSS3来自定义单选框radio与复选框checkbox

    单选框(radio)自定义样式 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...

  4. vue小结1

    (1)渐进式vue 构建用户界面的渐进式框架 只关注视图层 (2)vue中的两个核心点 响应的数据绑定:当数据发生改变时,自动更新视图 利用Object.definedProperty(该属性IE8不 ...

  5. 03CSS内容背景

    CSS内容背景 设置背景颜色——background-color  插入背景图片——background-image  设置背景图片位置——background-position 设置重复背景图片—— ...

  6. java去左右的空格(包括全角空格,tab,回车等)

    在开发中我们会遇到需要去除左右空格的需求,如果只是简单的空格,调一下trim()方法即可,但如果有中文全角.回车等看起来是空格的非空格,则需要自定义来开发实现,下面这个工具可以实现去左右那些看起来是空 ...

  7. get data from splunk

    link: http://dev.splunk.com/view/python-sdk/SP-CAAAER5 download SDK & setup with python code: im ...

  8. [Luogu] P4460 [CQOI2018]解锁屏幕

    题目背景 使用过Android 手机的同学一定对手势解锁屏幕不陌生.Android 的解锁屏幕由3X3 个点组成,手指在屏幕上画一条线,将其中一些点连接起来,即可构成一个解锁图案.如下面三个例子所示: ...

  9. [SCOI2011]棘手的操作(可并堆/并查集/线段树)

    我懒死了 过于棘手 但这题真的很水的说 毕竟写啥都能过 常见思路: ①:由于不强制在线,所以重新编号之后线段树维护 ②:用各种可以高速合并的数据结构,比如可并堆,可并平衡树啥的 讲一种无脑算法: 对于 ...

  10. oracle亲手安装过程

    适用于centos6 radhat6版本 1.检查依赖库: rpm -q binutils compat-libcap1 compat-libstdc++ compat-libstdc++.i686 ...