25分求调
查看原帖
25分求调
1211668
WMY_楼主2024/5/27 19:34

样例过了,但AC不了

#include <bits/stdc++.h>
using namespace std;

using LL = int64_t;



int n;
char ch[0x7ff];


int main()
{
	cin >> n;
	cin >> ch;
	int len=strlen(ch);
	int x[0xfff], y[0xfff];
	for(int j=1;j<=len;j++) {
		if(n==16) {
			x[j]=ch[len-j]-'A'+10;
			y[j]=ch[j-1]-'A'+10;
		}
		else x[j]=ch[len-j]-'0', y[j]=ch[j-1]-'0';
	}
	for(int i=1;i<=30;i++) {
		
		int a[0x7fff];
		memset(a,0,sizeof(a));
		int k=1;
		for(;k<=len;k++) {
			a[k]+=(x[k]+y[k])%n;
			a[k+1]=(x[k]+y[k])/n; 
		}
		if(a[k]) len++;
		bool flag=0;
		for(int j=1;j<=len/2;j++) {
			if(a[j]!=a[len-j+1]) {
				flag=1;
				break;
			}
		}
		if(flag==0) {
			cout<<"STEP="<<i<<'\n';
			return 0;
		}
		for(int j=1;j<=len;j++) {
			x[j]=a[j];
			y[j]=a[len-j+1];
		}
	}
	cout << "Impossible!\n";

	return 0;
}

2024/5/27 19:34
加载中...