首页 > 代码库 > “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 E
“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 E
Claire Redfield在龙之谷游戏的一次任务中获得了一个上了锁的宝箱,上面刻了一串由小写字母构成的字符串A和一个数字m 。
经过Claire长时间研究,他发现密码是和a ,m 有关的。字符串A相当于一个26进制的数字,a 相当于0 ,b 相当于1 …….z 相当于25 。然后要将这个26进制的数转化成m 进制那就是这个宝箱的密码。
Claire觉得这个太简单了所以要你帮她完成。
多组输入,每组一行,输入一个字符串A 和一个正整数m 。
字符串长度<=10,2<=m<=9
。
每组输出一行答案,如题意。
复制
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。