PTA第3周——7-5回文数

题目:

对于一个自然数n,若将n的各位数字反向排列所得的数n1与n相等,则称n为回文数,例如2332。

若给定一个N( 2<=N<=16)进制数M(M的长度在一百位以内),如果M不是回文数,可以对其进行N进制加法,最终得到回文数。

例如对于十进制数79 STEP1 : 79 + 97 = 176 STEP2 : 176 + 671 = 847 STEP3 : 847 + 748 = 1595 STEP4 : 1595 +5951 = 7546 STEP5 : 7546 + 6457 = 14003 STEP6 : 14003 + 30041 = 44044

那么对于给定的N进制数M,请判断其能否在30步以内(包括30步)得到回文数。

输入格式:

第一行包括一个正整数 N(2<=N<=16)。

第二行包括一个正整数M(一百位以内)。

输出格式:

如果可以在n步内得到回文数,输出“STEP=n”,否则输出“NO”。

输入样例1:

10
79

输出样例1:

STEP=6

输入样例2:

8
665556

输出样例2:

NO

题意分析:

解题思路:

具体算法流程:

实现细节(代码):

#include<bits/stdc++.h>
using namespace std;
string m;
char n1[105],n2[105],n3[105];
int t1,t2,t3,t;
int ans,n;
int jiafa(char a[105],int aa,char b[105],int bb) {
	memset(n3,0,sizeof(n3));
	t3=aa;
	for(int j=1; j<=t3; j++) {
		if((b[j]+a[j]+n3[j])>=n) {
			n3[j+1]=(n3[j]+a[j]+b[j])/n;
			n3[j]=(n3[j]+a[j]+b[j])%n;
		} else {
			n3[j]+=a[j]+b[j];
		}
	}
	if(n3[t3+1]!=0) t3++;
}
bool panduan(char a[105],int aa) {
	for(int i=1; i<=aa/2; i++) {
		if(a[i]!=a[aa-i+1]) return 0;
	}
	return 1;
}
int main() {
	cin>>n>>m;
	t=m.size();
	for(int i=0; i<t; i++) {
		if(m[i]>='0'&&m[i]<='9') {
			n3[i+1]=m[i]-48;
		} else {
			if(m[i]=='A') n3[i+1]=10;
			if(m[i]=='B') n3[i+1]=11;
			if(m[i]=='C') n3[i+1]=12;
			if(m[i]=='D') n3[i+1]=13;
			if(m[i]=='E') n3[i+1]=14;
			if(m[i]=='F') n3[i+1]=15;
		}
	}
	t3=t;
	if(panduan(n3,t3)==1) cout<<"STEP=0";
	else {
		while(panduan(n3,t3)==0&&ans<=30) {
			ans++;
			t1=t3;
			t2=t3;
			for(int i=1; i<=t1; i++) {
				n1[i]=n3[i];
			}
			for(int i=1; i<=t2; i++) {
				n2[i]=n3[t2-i+1];
			}
			jiafa(n1,t1,n2,t2);
		}
		if(panduan(n3,t3)==0) cout<<"NO";
		else cout<<"STEP="<<ans;
	}
}

总结:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇