• [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. scss常规用法

    保持sass条理性和可读性的最基本的三个方法:嵌套.导入和注释. 一般情况下,你反复声明一个变量,只有最后一处声明有效且它会覆盖前边的值. $link-color: blue; $link-color ...

  2. swift class extension 与继承

    1.扩展中无法继承重写已有函数,不能添加函数. Extensions can add new functionality to a type, but they cannot override exi ...

  3. shell脚本的练习

    创建一个以.sh结束的文件. 规则: 文件的头部使用#!/bin/sh 开头   这个是一个标识的作用,告诉使用哪种脚本来执行 echo 用来向命令行来输出的东西

  4. 常见的HTTP相应状态码

    200:请求被正常处理204:请求被受理但没有资源可以返回206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源.301:永 ...

  5. php生成订单号-当天从1开始自增

    /** * 生成订单号 * -当天从1开始自增 * -订单号模样:20190604000001 * @param Client $redis * @param $key * @param $back: ...

  6. DTD DOCTYPE

    总结: DOCTYPE是什么 ? 文档类型声明,告诉解析器用什么样的文档类型定义来解析此文档.DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现.   标准模式与兼容模式各有什么区别? 如果页面 ...

  7. 关于C/C++的一些思考(3)

    操作符重载函数(Operator Overload Function)的基本概念: 目的是以与对待内置数据类型相同的方式对待用户自定义类型(程序执行速度会受到影响),限制是不能随意选择函数名和参数个数 ...

  8. linux如何正确设置静态ip

    如果是新安装的CentOS7的用户,刚开始应该是没网的,ifconfig命令在CentOS7已经被淘汰了. 1.使用ip addr 即查看分配网卡情况. 2.激活网卡 [root@localhost ...

  9. mybatis中修改了数据,控制台显示成功,数据库没有修改

    在mybatis中遇到了修改数据时,控制台显示修改成功,但是去数据库查看并没有修改,这是因为mybatis不时自动提交事务的,所以是不会修改数据库的数据,这是我们加上一句 sqlSession.com ...

  10. 18Spring后置通知

    Spring后置通知,和前置通知类似,直接看代码: package com.cn.spring.aop.impl; //加减乘除的接口类 public interface ArithmeticCalc ...