hdu-2100-lovekey

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

坑爹,坑死人原谅我的水平低,开始就是二十六转十,然后十转二十六,完成之后测试数据对了,然后就一直WA,然后看了下数据,才知道这是大整数相加,然后我就直接二十六进制大整数加法,然后自己的测试数据一直对,然后提交上去一直WA,然后去discussion,说是如果AAA AAA,就应该加个判断条件if(strcmp(c,”“)==0),cout<<”A”;

然后就继续做,然后又继续WA,然后又看人家代码,然后又WA,然后调试,然后。。。。。。。。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
    //cout<<"sssssss";
    char a[201],b[201],c[201];
    int i,j,k,t,f;
    //cout<<"ssssss"<<endl;
    while(cin>>a)
    {
        memset(c,‘\0‘,sizeof(c));
        cin>>b;
        // cout<<"dasda"<<endl;
        int len1=strlen(a);
        int len2=strlen(b);
       t=0;
        f=1;
        for( i=len1,j=len2,k=0; i>0&&j>0; i--,j--,k++)
        {
            if(a[i-1]+b[j-1]+t-‘A‘>‘Z‘)
            {
                c[k]=a[i-1]+b[j-1]-‘A‘+t-26;
                t=1;
            }
            else
            {
                c[k]=a[i-1]+b[j-1]-‘A‘+t;
                t=0;
            }
       //   cout<<c[k]<<" ";
        }
      //  cout<<k<<endl;
      //  cout<<i<<endl;
      //  cout<<j<<endl;
        if(i>0)
        {
            for(; i>0; i--,k++)
            {
                if(a[i-1]+t>‘Z‘)
                {
                    c[k]=a[i-1]-26+t;
                    t=1;
                }
                else
                {
                    c[k]=a[i-1]+t;
                    t=0;
                }
              //  cout<<c[k]<<" ";

            }
          //  cout<<endl;
        }
        else if(j>0)
        {
              for(; j>0; j--,k++)
            {
                if(b[j-1]+t>‘Z‘)
                {
                    c[k]=b[j-1]-26+t;
                    t=1;
                }
                else
                {
                    c[k]=b[j-1]+t;
                    t=0;
                }
            }
        }
       /* for(int i=strlen(c)-1;i>=0;i--)
            cout<<c[i]<<" ";
        cout<<endl;
       */

        if(t==1)
            c[k]=‘B‘;
        for(int z=strlen(c)-1; z>=0; z--)
        {

        if(f&&c[z]==‘A‘)
        continue;
        else
        {
            printf("%c",c[z]);
            f=0;
        }
        }
        if(f==1)
           cout<<"A";
        cout<<endl;
    }
    return 0;
}

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

时间: 2024-10-19 23:06:11

hdu-2100-lovekey的相关文章

HDU 2100 Lovekey 模拟26进制

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忽然玩起了浪漫,要躲在学校

HDU 2100 Lovekey(26进制相加 数学啊)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2100 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) +

(string 高精度) Lovekey hdu 2100

Lovekey Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9070    Accepted Submission(s): 2976 Problem Description XYZ-26进制数是一个每位都是大写字母的数字. A.B.C.-.X.Y.Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规

hdoj 2100 Lovekey 【另类A+B】

直接将a与b相加就好了. 代码: #include <stdio.h> #include <string.h> #define M 210 char a[M], b[M],c[M]; int main(){ while(scanf("%s%s", a, b) == 2){ int la = strlen(a)-1; int lb = strlen(b)-1; memset(c, 0, sizeof(c)); int k = 0; while(la>=0&a

高精度题目列表

JAVA大数类练手 748 - Exponentiation Uva 424 Uva 10106 Uva 465 Uva 10494 POJ 2389 POJ 2756 HDU 1715 HDU 1047 HDU 1297 HDU 1002 HDU 1316 HDU 1865 HDU 1250 HDU 1042 HDU 1753 POJ 1220 HDU 2100 Uva 10023 Uva 10069 HDU 4762 Uva 10497 Uva 10844 HDU 4873 Uva 1478

Java大数练习第二弹

hdu1250 水题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 import java.util.*; import java.math.BigInteger; public class Main{ public static void main(String[] args){ int a; Scanner in=new Scanner(System.in); while(in.hasNext()){ a=in.nextInt();

HDU 3132 Taunt Exposure Estimation(数学)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3132 Problem Description The brave knights  of Camelot are constantly exposed to French taunting while assaulting the castle occupied by the French. Consequently, the taunting to which they are exposed v

HDU分类

模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 12

HDU 4002 Find the maximum(数论-欧拉函数)

Find the maximum Problem Description Euler's Totient function, φ (n) [sometimes called the phi function], is used to determine the number of numbers less than n which are relatively prime to n . For example, as 1, 2, 4, 5, 7, and 8, are all less than

HDU 3371 Connect the Cities 【最小生成树,Prime算法+Kruskal算法】

Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 17167    Accepted Submission(s): 4335 Problem Description In 2100, since the sea level rise, most of the cities disappear. Tho