1 solutions

  • 0
    @ 2025-11-5 17:15:04

    C++ :

    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,sum;string s;
    int a[1000]={0},b[1000]={0},c[1000]={0};//高精计算
    void init(int a[])
    {
    	cin>>n>>s;
    	a[0]=s.size();
    	for(int i=1;i<=a[0];++i)
    	{
    		if(s[a[0]-i]>='0'&&s[a[0]-i]<='9')
    		  a[i]=s[a[0]-i]-'0';
    		else
    		  a[i]=s[a[0]-i]-'A'+10;
    	}
    }
    bool pd(int a[])
    {
    	for(int i=1;i<=a[0];++i)
    	  if(a[i]!=a[a[0]-i+1])
    		return false;
    	return true;
    }
    void add(int a[])
    {
    	for(int i=1;i<=a[0];++i)
    	  b[i]=a[a[0]-i+1];//顺序颠倒的数;
    	for(int i=1;i<=a[0];++i)
    	  a[i]+=b[i];
    	for(int i=1;i<=a[0];++i)
    	{
    		a[i+1]+=a[i]/n;
    		a[i]%=n;
    	}
    	if(a[a[0]+1]>0)
    	  a[0]++;//防止进位过多及数组越界
    }
    int main()
    {
    	/*freopen("huiwen.in","r",stdin);
    	freopen("huiwen.ans","w",stdout);*/
    	init(a);
    	pd(a);//如果输入的数就是回文数直接cout0
    	if(pd(a)==true)
    	  {
    		cout<<0;
    		//system("pause");
    		return 0;
    	  }
    	while(sum<=30)
    	{
    		sum++;
    		add(a);
    		if(pd(a)==true)
    		{
    			cout<<sum;
    			//system("pause");
    			return 0;
    		}
    	}
    	cout<<"Impossible";
    	//system("pause");
    	return 0;
    }
    
    
    • 1

    Information

    ID
    18233
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By