(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进制的规则如下

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

思路:

此处可以看成26进制加法运算,不必进行换制运算,否则会很麻烦且容易超时。

同时,还应注意多余的A,并且,AAAAAAAAAA * 的结果还是任意一个字母* ,这个是必须考虑的。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string add(string a,string b)
{
    int len1=a.length();
    int len2=b.length();
    int i;
    if(len1>len2)
    {
        for(i=1;i<=len1-len2;i++)
            b="A"+b;
    }
    else
    {
        for(i=1;i<=len2-len1;i++)
            a="A"+a;
    }
    int cf=0,t;
    string str;
    len1=a.length();
    for(i=len1-1;i>=0;i--)
    {
        t=a[i]-‘A‘+b[i]-‘A‘+cf;
        cf=t/26;
        t%=26;
        str=char(t+‘A‘)+str;
    }
    if(cf!=0)
        str=char(cf+‘A‘)+str;
    reverse(str.begin(),str.end());
    int len=str.length();
    for(i=len-1;i>0;i--)
    {
        if(str[i]==‘A‘)
        {
            len--;
        }
        else
            break;
    }
    string str1;
    for(i=len-1;i>=0;i--)
        str1=str1+str[i];
    return str1;
}
int main()
{
    string a,b;
    while(cin>>a>>b)
    {
        string str;
        str=add(a,b);
        cout<<str<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/Weixu-Liu/p/9165373.html

时间: 2024-11-10 16:15:23

(string 高精度) Lovekey hdu 2100的相关文章

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高精度)A + B Problem II hdu1002

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 399645    Accepted Submission(s): 77352 Problem Description I have a very simple problem for you. Given two integers A and B, yo

HDU 6086 Rikka with String

Rikka with String http://acm.hdu.edu.cn/showproblem.php?pid=6086 题意: 求一个长度为2L的,包含所给定的n的串,并且满足非对称. 分析: AC自动机+状压dp. 首先给这个n个串,建立AC自动机.然后去枚举长度为L的一个串,就可以知道另一半了. 如果给定的串完全存在于左边或者右边,那么直接往AC自动机加入这个串或者取反后的反串.如果是跨越中间,那么暴力的把所有的串,从中间切开,然后判断是否合法,加入到AC自动机上就行,如果长度枚举

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 4324 Triangle LOVE(拓扑判环)

Triangle LOVE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 3603    Accepted Submission(s): 1416 Problem Description Recently, scientists find that there is love between any of two people. Fo

高精度题目列表

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();

剪花布条---hdu2087(kmp模板)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 kmp模板题: #include <cstdio> #include <cstring> #include <iostream> using namespace std; #define N 1100 char s1[N], s2[N]; int p[N], L1, L2; void Getp() { int i=0, j=-1; p[0] = -1; while(i