1 条题解

  • 0
    @ 2023-12-23 17:31:20
    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初始化 
    	a[0]=s.length();//用a[0]计算字符串s的位数 
    	for(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 check(int a[])
    {
    	for(i=1;i<=a[0];i++)
    		if(a[i]!=a[a[0]-i+1]) return false;
    	return true;
    }
    void jia(int a[])
    {
    	int i,k;
    	for(i=1;i<=a[0];i++) 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[0]++;
    }
    int main()
    {
    	freopen("huiwen.in","r",stdin);
    	freopen("huiwen.out","w",stdout);
    	init(a);
    	if(check(a))
    	{
    		cout<<"STEP="<<'0';
    		return 0;
    	}
    	ans=0;
    	while(ans<=30)
    	{
    		ans++;
    		jia(a);
    		if(check(a))
    		{
    			cout<<"STEP="<<ans;
    			return 0;
    		}
    	}
    	cout<<"Impossible!";
    	return 0;
    }
    
    • 1

    信息

    ID
    1555
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    84
    已通过
    22
    上传者