开始: 2022-06-25 19:00:00

2022年6月双周赛2(高级班)

结束: 2022-06-25 21:30:00
当前: 2025-0606-0202 00:20:23  类型:OI 状态:已经结束 

//B. 进制转换
#include <bits/stdc++.h>
using namespace std;
int ito(char a)
{
if(a=='A') return 10;
if(a=='B') return 11;
if(a=='C') return 12;
if(a=='D') return 13;
if(a=='E') return 14;
if(a=='F') return 15;
return int(a-'0');
}
char oti(int a)
{
if(a==15) return 'F';
if(a==14) return 'E';
if(a==13) return 'D';
if(a==12) return 'C';
if(a==11) return 'B';
if(a==10) return 'A';
return char(a+'0');
}
int main()
{
int n=0,p1,p2,x=1;
string s,res="";
cin>>p1>>s>>p2;
for(int i=s.size()-1; i>=0; i--)//从低位到高位转换
{
//进行p1进制转10进制的运算,结果存在n中
n+=ito(s[i])*x;//ito函数将字符转变为数字
x*=p1;
//x一开始为p1^0,然后依次为p1^1,p1^2...
}
//进行10进制转p2进制的运算,结果存在res中
//由于高进制数存在字符,故用字符串储存结果
while(n!=0)
{
res=oti(n%p2)+res;//oti函数将数字转变为字符
n/=p2;
}
cout<<res<<endl;
return 0;
}
/*
思路:
首先,你应该有基本的进制转换知识:https://www.php.cn/faq/417579.html
考虑将原数转换为十进制数,再将十进制数转换为需要的进制
具体实现见代码
*/

C. 学籍管理系统:https://www.luogu.com.cn/blog/ravenclawyangrunze/solution-p5266

D. 线性筛素数(重要):https://www.luogu.com.cn/blog/cicos/notprime