首页 > 代码库 > “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 E

“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 E

Claire Redfield在龙之谷游戏的一次任务中获得了一个上了锁的宝箱,上面刻了一串由小写字母构成的字符串A和一个数字

经过Claire长时间研究,他发现密码是和 有关的。字符串A相当于一个26进制的数字, 相当于 相当于 ……. 相当于25  。然后要将这个26进制的数转化成 进制那就是这个宝箱的密码。

Claire觉得这个太简单了所以要你帮她完成。

多组输入,每组一行,输入一个字符串 和一个正整数
字符串长度<=102<=m<=

每组输出一行答案,如题意。

复制
b 2
1

主要是处理26进制转化吧
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 #define ULL unsigned long long
 5 LL modl(LL a, LL b)        //快速幂取余a^b%c
 6 {
 7     LL res, t;
 8     res = 1 ;
 9     t = a ;
10     while (b)
11     {
12         if (b & 1)
13         {
14             res = res * t ;
15         }
16         t = t * t ;
17         b >>= 1;
18     }
19     return res;
20 }
21 int main()
22 {
23     LL n;
24     string s;
25     LL a[1000];
26     LL g;
27     while(cin>>s>>g)
28     {
29         memset(a,0,sizeof(a));
30         LL sum=0;
31         reverse(s.begin(),s.end());
32         for(int i=0;i<s.length();i++){
33             LL ans=(int)(s[i]-0)-49;
34             sum+=(ans*modl(26,i));
35           //  cout<<sum<<endl;
36         }
37         //cout<<sum<<endl;
38         n=sum;
39         int i=0;
40         if(n==0){
41             cout<<"0";
42         }else{
43             while(n){
44                 a[i]=n%g;
45                 n/=g;
46                 i++;
47             }
48             for(int j=i-1;j>=0;j--){
49                 cout<<a[j];
50             }
51         }
52         cout<<endl;
53     }
54 }

 

“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 E