Lovekey

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 6721    Accepted Submission(s): 2186

Problem Description
XYZ-26进制数是一个每位都是大写字母的数字。 A、B、C、…、X、Y、Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规则如下

A0A1A2A3…An-1 的每一位代表的数字为a0a1a2a3…an-1 ,则该XYZ-26进制数的10进制值就为



m = a0 * 26^(n-1) + a1 * 26^(n-2) + … + an-3* 26^2 + an-2*26 + an-1



一天vivi忽然玩起了浪漫,要躲在学校的一个教室,让枫冰叶子去找,当然,她也知道枫冰叶子可不是路痴,于是找到了XYZ的小虾和水域浪子帮忙,他们会在vivi藏的教室的门口,分别写上一个XYZ-26进制数,分别为 a 和 b,并且在门锁上设置了密码。显然,只有找到密码才能打开锁,顺利进入教室。这组密码被XYZ的成员称为lovekey。庆幸的是,枫冰叶子知道lovekey是 a的10进制值与b的10进制值的和的XYZ-26进制形式。当然小虾和水域浪子也不想难为枫冰叶子,所以a 和 b 的位数都不会超过200位。

例如第一组测试数据

a = 0 * 26^5+0* 26^4+ 0* 26^3+ 0 *26^2 + 3*26 + 7 = 85

b = 1*26^2 + 2*26 + 4 = 732

则 a + b = 817 = BFL
 
Input
题目有多组测试数据。

每组测试数据包含两个值均为的XYZ-26进制数,每个数字的每位只包含大写字母,并且每个数字不超过200位。
 
Output
输出XYZ的lovekey,每组输出占一行。
 
Sample Input
AAAADH BCE
DRW UHD
D AAAAA
 
Sample Output
BFL
XYZ
D
 

#include<queue>

#include<math.h>

#include<stdio.h>

#include<string.h>

#include<iostream>

#include<algorithm>

using namespace std;

#define N 215

char a[N],b[N],c[N];

void reverse(char a[])

{

    int len=strlen(a);

    for(int i=0;i<len/2;i++)

    {

        swap(a[i],a[len-i-1]);

    }

}

int main()

{

    while(~scanf("%s%s",a,b))

    {



        int len_a=strlen(a);

        int len_b=strlen(b);

        reverse(a);

        reverse(b);

        int jin=0;

        for(int i=0;i<max(len_a,len_b);i++)

        {

//            cout<<b[i]<<endl;

            if(a[i]=='\0')

            {

//                printf("aaaaajin=%d\n",jin);

                if(jin)

                {

                    c[i]=b[i]-'A'+1;

                    jin=0;

                    if(c[i]>=26)

                    {

                        if(i==max(len_a,len_b)-1)

                        {

                            c[i]=c[i]-26+'A';

                            c[i+1]='B';

                            c[i+2]=0;

                        }

                        else

                        {

                            c[i]=c[i]-26+'A';

                            jin=1;

                        }

                    }

                    else

                    {

                        c[i]=c[i]+'A';

                    }

                }

                else

                {

                    c[i]=b[i];

                    jin=0;

                }



            }

            else if(b[i]=='\0')

            {

//                printf("bbbbbjin=%d\n",jin);

                if(jin)

                {

                    c[i]=a[i]-'A'+1;

                    jin=0;

                    if(c[i]>=26)

                    {

                        if(i==max(len_a,len_b)-1)

                        {

                            c[i]=c[i]-26+'A';

                            c[i+1]='B';

                            c[i+2]=0;

                        }

                        else

                        {

                            c[i]=c[i]-26+'A';

                            jin=1;

                        }

                    }

                    else

                    {

                        c[i]=c[i]+'A';

                    }

                }

                else

                {

                    c[i]=a[i];

                    jin=0;

                }

            }

//            printf("%c %c %c\n",a[i],b[i],jin);

            else {



//            printf("%c %c\n",a[i],b[i]);

            c[i]=a[i]+b[i]+jin-'A'*2;

//            printf(" *  %d \n",c[i]);

            jin=0;

            if(c[i]>=26)

            {

                if(i==max(len_a,len_b)-1)

                {

                    c[i]=c[i]-26+'A';

                    c[i+1]='B';

                    c[i+2]=0;

                }

                else

                {

                    c[i]=c[i]-26+'A';

                    jin=1;

//                    printf("jin=%d",jin);

                }

            }

            else

                c[i]=c[i]+'A';

//            printf(" #  %d %c\n",c[i],c[i]);

        }



        }



        for(int i=strlen(c)-1;i>0;i--)

        {

            if(c[i]=='A')

                c[i]='\0';

            else

            {

                break;

            }

        }

        reverse(c);



        cout<<c<<endl;

        memset(a,0,sizeof(a));

        memset(b,0,sizeof(b));

        memset(c,0,sizeof(c));



    }

    return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 2100 分类: ACM 2015-06-17 23:49 15人阅读 评论(0) 收藏的更多相关文章

  1. 动态链接库(DLL) 分类: c/c++ 2015-01-04 23:30 423人阅读 评论(0) 收藏

    动态链接库:我们经常把常用的代码制作成一个可执行模块供其他可执行文件调用,这样的模块称为链接库,分为动态链接库和静态链接库. 对于静态链接库,LIB包含具体实现代码且会被包含进EXE中,导致文件过大, ...

  2. 认识C++中的临时对象temporary object 分类: C/C++ 2015-05-11 23:20 137人阅读 评论(0) 收藏

    C++中临时对象又称无名对象.临时对象主要出现在如下场景. 1.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象. Integer inte= Integer(5); ...

  3. Windows7下QT5开发环境搭建 分类: QT开发 2015-03-09 23:44 65人阅读 评论(0) 收藏

    Windows7下QT开法环境常见搭配方法有两种. 第一种是:QT Creator+QT SDK: 第二种是:VS+qt-vs-addin+QT SDK: 以上两种均可,所需文件见QT社区,QT下载地 ...

  4. 树莓派安装mjpg-streamer视频监控 分类: Raspberry Pi 2015-04-12 23:41 144人阅读 评论(0) 收藏

    原来使用Motion在树莓派上跑1280x720分辨率的三颗摄像头.占用内存太严重,关闭诸多功能之后还是不行.故转战mjpg-streamer. 首先安装所需软件 sudo apt-get insta ...

  5. 【从0到1学Web前端】CSS定位问题三(相对定位,绝对定位) 分类: HTML+CSS 2015-05-29 23:01 842人阅读 评论(0) 收藏

    引子: 开始的时候我想先要解决一个问题,怎么设置一个div盒子撑满整个屏幕? 看下面的html代码: <body> <div id="father-body"&g ...

  6. 循环队列 分类: c/c++ 2014-10-10 23:28 605人阅读 评论(0) 收藏

    利用线性表实现队列,为了有效利用空间,将其设计为循环结构,防止假溢出:牺牲一个存储单元以区分队空.队满. 设front队头,rear队尾,N为顺序表大小 队空:rear==front 队满:(rear ...

  7. 链表中用标兵结点简化代码 分类: c/c++ 2014-09-29 23:10 475人阅读 评论(0) 收藏

    标兵结点(头结点)是在链表中的第一个结点,不存放数据,仅仅是个标记 利用标兵结点可以简化代码.下面实现双向链表中的按值删除元素的函数,分别实现 带标兵结点和不带标兵结点两版本,对比可见标兵结点的好处. ...

  8. egrep命令的实现 分类: 编译原理 2014-06-01 23:41 329人阅读 评论(0) 收藏

    本程序实现了egrep命令,首先将正则表达式转换为NFA,并实现模拟NFA的算法. 本程序使用flex实现词法分析,bison实现语法分析 若给定的一行字符串中存在一个字串能被该NFA接受,则输出整行 ...

  9. 随机L系统分形树 分类: 计算机图形学 2014-06-01 23:27 376人阅读 评论(0) 收藏

    下面代码需要插入到MFC项目中运行,实现了计算机图形学中的L系统分形树. class Node { public: int x,y; double direction; Node(){} }; CSt ...

随机推荐

  1. UC编程之线程

    线程--隶属于进程,是进程中的程序流.操作系统支持多进程,每个进程内部支持多线程.多线程并行(同时执行)代码. 进程--重量级的,每个进程都需要独立的内存空间. 线程--轻量级的,线程不拥有独立的内存 ...

  2. R语言实战读书笔记(二)创建数据集

    2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow ...

  3. UVa 11014 (莫比乌斯反演) Make a Crystal

    这个题是根据某个二维平面的题改编过来的. 首先把问题转化一下, 就是你站在原点(0, 0, 0)能看到多少格点. 答案分为三个部分: 八个象限里的格点,即 gcd(x, y, z) = 1,且xyz均 ...

  4. js解决快速回车重复订单提交(客户端方式)

    Html代码: <form action="order_add_data.php" method="post" name="order_adds ...

  5. org.apache.jasper.JasperException: /WEB-INF/jsp/add.jsp(40,24) quote symbol expected

    add.jsp 的40行24列少了一个 引号

  6. matplotlib 中文问题

    matplotlib的缺省配置文件中所使用的字体无法正确显示中文.为了让图表能正确显示中文,主要有三种设置中文的方法: (1)直接读取指定的字体文件.这种方法的依赖性最小,缺点是要指定字体文件的路径. ...

  7. adb shell 查找并删除文件

    # -*- coding: cp936 -*- ## function: remove file ## remark: python version -- import os,sys import l ...

  8. MySQL与Oracle 差异比较之二基本语法

    基本语法 编号 类别 ORACLE MYSQL 注释 1 变量的声明方式不同 li_index NUMBER := 0 DECLARE li_index INTEGER DEFAULT 0 1. my ...

  9. jQuery Mobile 1.1八大新特性介绍

    随着HTML 5时代的来临,移动开发开始进入了一个新的时代,现在只需要懂得HTML5,配合一定的开发框架,就可以开发出十分漂亮的HTML5的移动应用.在众多的 移动HTML5开发框架中,比较著名的是j ...

  10. linearlayout 水平垂直居中

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...