#include<iostream>
#include<bitset>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
long long result[n]; //存放最后结果
//先将十六进制转换为十进制
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
result[i-1]=0;
int len=s.size();
for(int j=0;j<len;j++)
{
if(s[j]-'A'>=0&&s[j]-'F'<=0)
result[i-1]+=(long long)(s[j]-'A'+10)*(long long)(pow(16,len-j-1));
else if(s[j]>='0'&&s[j]<='9')
result[i-1]+=(long long)(s[j]-'0')*(long long)(pow(16,len-j-1));
else
break;
}
}
//用bitset库控制输出格式为八进制的数
for(int i=0;i<n;i++)
{
cout<<oct<<result[i]<<endl;
}
}
自己计算感觉结果没问题,但是蓝桥杯系统却显示错误,有没有大佬帮帮萌新,哭了
8进制是占3个比特为,16进制占4个比特为,新开辟一个空间,把16进制内存数据每次复制三个到新的空间内
大佬能在详细点吗 编程小白啊