文章
1
粉丝
131
获赞
0
访问
7.7k
一部分AC的代码,将11进制的1A转为10进制时,会出现28的错误答案(应该是21)
贴出我的AC代码,要是也有错还烦请各位告知一声
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
string s;
cin>>s;
vector<int> ans;
//ans每位*m,s[i]只加在个位,然后检查各位是否需要进位
int slen=s.length();
ans.push_back(0);
int aend=1;//指向ans最后一位的下一位
for (int i = 0; i < slen; i++)//i遍历s
{
for (int j = 0; j < aend; j++)//每位*m
{
ans[j] =ans[j]*m;
if (j==0){
if(s[i]>='0'&&s[i]<='9')
ans[j]+=s[i]-'0';
else
ans[j]+=s[i]-'A'+10;}
}
for (int j = 0; j < aend; j++)//检查是否进位
{
if (ans[j]>=n)
{
if(j==aend-1){
aend++;
ans.push_back(0);
}
ans[j+1] += ans[j]/n;//注意是除以n
ans[j]=ans[j]%n;
}
}
}
string result;
for (int i = aend-1; i >=0; i--)
{
if (n>10)
{
if (ans[i]>=10)
{
result.push_back(char(ans[i]-10+'a'));
...
登录后发布评论
暂无评论,来抢沙发