hdoj2100 Lovekey 26進製的加法

2022-09-02 19:42:07 字數 1713 閱讀 5434

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思路:

1.所謂的26進製即用a-z分表代表0-25,然後26進一。

2.直接開闢乙個整數陣列,用來記錄每一位的數值,即0-25,然後輸出時加上『a』再轉換為字元。

3.直接將每位數相加,逢26進一,而不是按照題中的意思轉換為10進製再加減。

#include 

#include

#include

using

namespace

std;

void add(string s1, string s2)

//先處理兩個數的等長部分

int d = s1.length() - s2.length();

for(i = s2.length()-1; i >= 0; i --)

else

}for(i = d-1; i >= 0; i --)

else

}if(last > 0)

bool ok = true;

for(i = k-1 ; i >= 0; i --)

ok = false;

cout

<< (char)(s[i]+'a') ;

}cout

<< endl;

}int main()

return

0;}

hdoj 雜湊表題hdoj1425

github鏈結 include include using namespace std const int offset 500000 bool hash offset 500001 int main for int i offset 500001 i 0 n 0 i return0 這道題資料是...

演算法筆記習題2 10

你的任務是計算a b。這是為了acm初學者專門設計的題目。你肯定發現還有其他題目跟這道題的標題類似,這些問題也都是專門為初學者提供的。輸入包含一系列的a和b對,通過空格隔開。一對a和b佔一行。對於輸入的每對a和b,你需要依次輸出a b的和。如對於輸入中的第二對a和b,在輸出中它們的和應該也在第二行。...

2 10進製數轉換

題目 每組輸入兩個數 n,m,中間空格隔開。n代表數值,m代表數制 2進製,10進製 多組輸入,遇n和m等於0結束。樣例輸入 10 2 10 10 0 0 樣例輸出 2 1010 1000 0000 1111 1111 128 255 1000 000 1111 111 64 127 思路 十進位制...