记录编号 366032 评测结果 AAAA
题目名称 [NOIP 1999]回文数 最终得分 100
用户昵称 GravatarkZime 是否通过 通过
代码语言 C++ 运行时间 0.001 s
提交时间 2017-01-22 14:09:29 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int b,n;char a[100],c[100];
void str_int(){
	for(int i=0;i<n;i++){
		if(a[i]>='0'&&a[i]<='9')a[i]-=48;
		else if(a[i]>='a'&&a[i]<='f')a[i]-=87;
	}
}
void jz(){
	for(int i=0,j=n-1;i<n;i++,j--){
		c[j]=a[i];
	}
	for(int i=0;i<n;i++){
		a[i]=c[i];
	}
	for(int i=0;i<n;i++){
		int x=a[i]/b;
		if(x){
			if(i==n-1)n++;
			a[i+1]+=x;
			a[i]%=b;
		}
	}
	for(int i=0,j=n-1;i<n;i++,j--){
		c[j]=a[i];
	}
	for(int i=0;i<n;i++){
		a[i]=c[i];
	}
}
bool is_hw(){
	for(int i=0,j=n-1;i<=n/2;i++,j--){
		if(a[i]!=a[j])return 0;
	}
	return 1;
}
int main(){
	freopen("huiwen.in","r",stdin);
	freopen("huiwen.out","w",stdout);
	scanf("%d",&b);
	scanf("%s",&a);
	n=strlen(a);
	str_int();
	for(int i=0;i<=30;i++){
		if(is_hw()){
			for(int i=0;i<n;i++){
				if(a[i]>=10)printf("%c",a[i]+87);
				else printf("%d",a[i]);
			}
			printf("\n%d",i);
			return 0;
		}
		for(int i=0;i<n;i++){
			c[i]=a[i];
		}
		for(int i=0,j=n-1;i<n;i++,j--){
			a[i]+=c[j];
		}
		jz();
	}
	printf("impossible");
	return 0;
}