蒟蒻求助!!!
查看原帖
蒟蒻求助!!!
304722
HarryPotterJames楼主2021/10/1 21:11

P1015

#include<bits/stdc++.h>

using namespace std;

int a[105],jw[305];
int n,len;

int in(char a)
{
	if(a=='A') return 10;
	if(a=='B') return 11;
	if(a=='C') return 12;
	if(a=='D') return 13;
	if(a=='E') return 14;
	if(a=='F') return 15;
	return a-'0'; 
}

int Read(int arr[])
{
	string s;
	cin>>s;
	for(int i=0;i<s.size();i++)
		a[i+1]=in(s[i])/10,a[i]=in(s[i])%10;
	reverse(a,a+s.size());
	return s.size()+1;
}

int add(int arr1[],int arr2[])
{
	for(int i=0;i<len;i++)
	{
		arr1[i]=arr2[i]+arr1[i]+jw[i];
		if(arr1[i]>n)
			jw[i+1]=a[i]/n,a[i]%=n;
	}
	return sizeof(arr1)/sizeof(*arr1);
}

void fz(int arr1[],int arr2[])//复制 
{
	for(int i=0;i<len;i++)
		arr2[i]=arr1[i];
}

bool pd(int arr[])
{
	int i[len+1];
	fz(arr,i);
	reverse(i,i+len);
	for(int j=0;j<len;j++)
		if(arr[j]!=i[j])
			return 0;
	return 1;
}

int main()
{
	memset(a,0,sizeof(a));
	memset(jw,0,sizeof(jw));
	cin>>n;
	len=Read(a);
	int ans=0;
	bool flag=1;
	while(ans<=30&&flag)
	{
		int ls[len+1];
		fz(a,ls);
		reverse(ls,ls+len);
		len=add(a,ls);
		ans++;
		if(pd(a))
		{
			cout<<"STEP="<<ans<<endl;
			flag=0;
		}
	}
	if(flag) cout<<"Impossible!"<<endl;
	return 0;
}

只有第4个点对了,求大佬指教,谢谢!

2021/10/1 21:11
加载中...