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. 微信朋友圈如何同时分享(图片+文字) Android版

    以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activit ...

  2. DOM应用

    父级.removeChild(子节点);父级.appendChild(子节点);父级.insertBefore(子节点, 在谁之前); 创建元素: <script> window.onlo ...

  3. C#中的lock关键字;就是lock住一个大家都共同访问的(静态static的)东东就行了

    public class ChatService : IChat //继承IChat接口或者说IChat的实现类 { //定义一个静态对象用于线程部份代码块的锁定,用于lock操作 private s ...

  4. css3 切换贞动画的效果,仿gif效果

    /*---第一组动画---*/ .cartonGif_1{ position: absolute; display: block; background:url("img/haihangzh ...

  5. scala学习笔记(4):占位符

    scala 中占位符的用法 1.作为“通配符”,类似Java中的*.如import scala.math._ 2.:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = s ...

  6. web.xml 中的listener、 filter、servlet 加载顺序

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  7. Spring cron 表达式

    前言: 最近做的项目有用到定时器,每周只在特定时间运行一次,考虑到Spring Task的简单易用性,就果断选择了,我是配置在配置文件里面,没有用注解@Scheduled,推荐配置,注解虽方便,但更改 ...

  8. ORACLE执行计划 explain说明

    ORACLE SQL优化工具系列之--EXPLAIN PLAN 对于oracle数据库来说,sql语句的优化可能是对性能提升最为明显的,当然对于DBA来说,也是挑战性比较大的.为了优化一个复杂的SQL ...

  9. 剑指offer—第三章高质量的代码(按顺序打印从1到n位十进制数)

    题目:输入一个数字n,按照顺序打印出1到最大n位十进制数,比如输入3,则打印出1,2,3直到最大的3位数999为止. 本题陷阱:没有考虑到大数的问题. 本题解题思路:将要打印的数字,看成字符串,不足位 ...

  10. 【转】Linux设备驱动之mmap设备操作

    原文网址:http://www.cnblogs.com/geneil/archive/2011/12/08/2281222.html 1.mmap系统调用 void *mmap(void *addr, ...