记录编号 362514 评测结果 AAAA
题目名称 [NOIP 1999]回文数 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2017-01-07 17:16:45 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define MAXN 500
#define is_num(_tmp)\
	((_tmp<='9'&_tmp>='0')||(_tmp>='a'&&_tmp<='f'))
#define is_n(_tmp) (_tmp<='9'&_tmp>='0')
#define my_max(_num_1,_num_2) (_num_1>_num_2?_num_1:_num_2)
void my_swap(int&a,int&b)
{
	int c=a;
	a=b,b=c;
	return ;
}
struct gj{
	int len,j;
	int s[MAXN];
	void clear()
	{
		len=0;memset(s,0,sizeof(s));
		return ;
	}
	gj()
	{
		clear();
	}
	gj swap()
	{
		gj a=*this;
		for(int i=0;i<len/2;i++)
		  my_swap(a.s[i],a.s[len-i-1]);
		return a;
	}
	gj operator+(const gj&a)
	{
		gj b;b.clear();
		b.j=j;
		b.len=my_max(len,a.len)+1;
		for(int i=0;i<b.len;i++)
		{
			b.s[i]+=a.s[i]+s[i];
			b.s[i+1]+=b.s[i]/j;
			b.s[i]%=j;
		}
		if(!b.s[b.len-1])b.len--;
		return b;
	}
	void read()
	{
		clear();
		scanf("%d",&j);
		char _tmp(getchar());
		while(!is_num(_tmp))_tmp=getchar();
		while(is_num(_tmp))
		  if(is_n(_tmp))s[len++]=_tmp-'0',_tmp=getchar();
		    else s[len++]=_tmp-'a'+10,_tmp=getchar();
		*this=swap();
		return ;
	}
	void print()
	{
		for(int i=0;i<len;i++)
		  if(s[i]>=10)cout<<(char)(s[i]+'a'-10);
		    else cout<<s[i];
	}
};
int ans;
bool hw(gj &a)
{
	ans++;
	gj b=a.swap();
	a=a+b;
	for(int i=0;i<a.len/2;i++)
	  if(a.s[i]!=a.s[a.len-i-1])return 0;
	return 1;
}
int main()
{
	freopen("huiwen.in","r",stdin);
	freopen("huiwen.out","w",stdout);
	gj a;
	a.read();
	bool flag=0;
	for(int i=0;i<30;i++)
	  if(hw(a)){flag=1;break;}
	    else continue;
	if(flag)a.print(),cout<<"\n"<<ans<<"\n";
	  else cout<<"impossible\n";
	return 0;
}