P1015求助
  • 板块学术版
  • 楼主lxt♛♛♛
  • 当前回复8
  • 已保存回复8
  • 发布时间2020/11/15 12:40
  • 上次更新2023/11/5 08:01:01
查看原帖
P1015求助
352775
lxt♛♛♛楼主2020/11/15 12:40
#include<bits/stdc++.h>
using namespace std;
int n,a[101],b[101],ans,i;
void init(int a[])  //将数串s转化为数组a
{
    string s;
    cin>>n>>s;  //读入字符串s
    memset(a,0,sizeof(a));    //数组a清为0
    /*上面这一步等同于:
    for(int i = 0;i<sizeof(a);i++)
    {
        a[i] = 0;
    }*/
    a[0] = s.length();  //用a[0]计算字符串s的位数
    for(i = 1;i<=a[0];i++)//等同于:i<=s.length()
    {
        if(s[a[0]-i]>='0' && s[a[0]-i]<='9')
        {
            a[i] = s[a[0]-i]-'0';   //将数串s转换为数组a,并倒序存储
        }
        else
        {
            a[i] = s[a[0]-i] - 'A'+10;
        }
    }
    
}
bool check(int a[]) //判别整数数组a是否为回文数
{
    for(int i = 1;i<=a[0];i++)
    {
        if(a[i] != a[a[0]-i+1])
        {
            return flase;
        }
    }
    return true;
}
void jia(int a[])   //整数数组a与其反序数b进行n进制加法运算
{
    int i,k;
    for(i = 1;i<=a[0];i++)  //反序数b
    {
        b[i] = a[a[0]-i+1];
    }
    for(i = 1;i<=a[0];i++)  //逐位相加
    {
        a[i]+=b[i];
    }
    for(i = 1;i<=a[0];i++)  //处理进位
    {
        a[i+1]+=a[i]/n;
        a[i]%=n;
    }
    if(a[a[0]+1]>0) //修正新的a的位数(a+b只能进一位)
    {
        a[0]++;
    }
}
int main()
{
    init(a);
    if(check(a))
    {
        cout<<0<<endl;
        return 0;
    }
    ans = 0;    //步数初始化为0
    while(ans<=30)
    {
        ans++;
        jia(a);
        if(check(a))
        {
            cout<<ans<<endl;
            return 0;
        }
    }
    cout<<"Impossible"; //输出无解信息
    return 0;
}

file:///C:/Users/lenovo/Desktop/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202020-11-15%20123652.png

上面这个链接是我的报错信息☝☝☝,哪位dalao帮我看看

2020/11/15 12:40
加载中...