• [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. vue2.0 路由知识一(路由的创建的全过程)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. chosen-bootstrap使用技巧

    1.页面加载完成后,通过js方式设置值,无法有效显示的问题. 解决:先设置值,让后在进行初始化操作. // 设置select选中值 $("#type").val(type); // ...

  3. vultr服务器L2TP搭建

    前期准备,购买外服,选择vultr服务商,可选择洛杉矶的,系统为Ubuntu 14.04 x64 一.安装L2TP/IPSec wget --no-check-certificate https:// ...

  4. h5编写帧动画

    var requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame; var ...

  5. 用 vue cli 脚手架搭建单页面 Vue 应用(进阶2)

    1.配置 Node 环境. 自行百度吧. 安装好了之后,打开 cmd .运行 node -v .显示版本号,就是安装成功了. 注:不要安装8.0.0以上的版本,和 vue-cli 不兼容. 我使用的 ...

  6. 图解C/C++多级指针与多维数组

    声明:本文转自 chenyang_yao ,欢迎阅读原文. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更是让很多人云里雾里,其实,只要掌握一定的方法 ...

  7. LBE_登录Demo

    目录 服务器 最小资产库创建 entity配置 实体的Python实现 创建第一个空间Space 让entity进入空间Space 客户端(unity) 生成客户端SDK 实现Client部分验证 验 ...

  8. rbac组件之数据库设计(一)

    rbac是基于角色的权限设计,一共包含六张表,具体的表设计如下: from django.db import models class Menu(models.Model): "" ...

  9. C++ string 转整数

    使用 sstream 完成转换, #include <iostream> #include <string> #include <sstream> #include ...

  10. Qt 编写应用支持多语言版本--一个GUI应用示例

    简介 上一篇博文已经说过如何编写支持多语言的Qt 命令行应用,这一篇说说Qt GUI 应用多语言支持的坑. 本人喜欢用代码来写布局,而不是用 Qt Designer 来设计布局,手写布局比 Qt De ...