社区讨论

求助啊!!!(痛苦)(扭曲)(抽搐)(嘶吼)

P1015[NOIP 1999 普及组] 回文数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lu52g5sc
此快照首次捕获于
2024/03/24 13:16
2 年前
此快照最后确认于
2024/03/24 14:56
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
char a1[500];//输入的字符串 
int a2[500],b[500];//a2:a1的数字形式   b:a2的回文形式 
int lon,cnt;//lon数组长度  cnt判断回文的计数变量 
int main(){
	int n;//进制 
	scanf("%d",&n);
	int jw=n;//进位 
	scanf("%s",a1);
	lon=strlen(a1);
	for(int i=0;i<=lon;i++){
		if(a1[i]<='F'&&a1[i]>='A') a2[i]=a1[i]-'A'+10; 
		else a2[i]=a1[i]-'0';
		b[i]=a2[lon-i+1]; 
	}
	for(int i=1;i<=30;i++){
		cnt=0;
		for(int j=0;j<=lon;j++){
			if(a2[j]==b[j]) cnt++;
		} 
		if(cnt==lon){
			printf("STEP=%d",i);
			return 0;
		}
		if(i==29){
			printf("Impossible!");
			return 0;
		}
		for(int k=0;k<=lon;k++) a2[k]+=b[k];
		for(int j=0;j<=lon;j++){
			if(a2[j]>=jw){
				if(j!=lon){
					a2[j+1]++;
					a2[j]-=jw+1;
				} 
				else{
					lon++;
					a2[j]-=jw+1;
					a2[lon]=1;
				}
			}
		}
		for(int j=0;j<=lon;j++) b[j]=a2[lon-j+1];
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...