这道题在蓝桥杯上输出的答案跟其他能正常通过的代码所输出的答案一模一样,但就是测试通过不了。代码如下,望各位大佬能开导下小弟。
#include "iostream"
#include "string"
using namespace std;
int change1(char c)
{
int n;
if(c>='0'&&c<='9')
{
n=c-'0';
}
else
{
n=c-'A'+10;
}
return n;
}
string change2(string m)
{
int n,length=m.length()-1;
string a,b;
while(length>=0)
{
n=change1(m[length--]);
while(n>=2)
{
a+=n%2+'0';
n=n/2;
}
a+=n+'0';
n=a.length();
while(n%4!=0)
{
a+="0";
n++;
}
}
for(int i=a.length()-1;i>=0;i--)
{
b+=a[i];
}
return b;
}
int change3(string m)
{
int i=0,j=0,length=m.length();
string n;
while(length%3)
{
n+="0";
length++;
}
n+=m;
for(i;i<n.length();i=i+3)
{
j=j*10+(n[i]-'0')*4+(n[i+1]-'0')*2+(n[i+2]-'0')*1;
}
return j;
}
int main()
{
int length,i=0,n,number,a[20];
string m;
cin>>number;
length=number;
while(number)
{
cin>>m;
m=change2(m);
a[i++]=change3(m);
number--;
}
i=0;
while(i<length)
{
cout<<a[i++]<<endl;
}
return 0;
}