1019. General Palindromic Number

标签: pat
15人阅读 评论(0) 收藏 举报
分类:

1019. General Palindromic Number (20)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers.

Although palindromic numbers are most often considered in the decimal system, the concept of palindromicity can be applied to the natural numbers in any numeral system. Consider a number N > 0 in base b >= 2, where it is written in standard notation with k+1 digits ai as the sum of (aibi) for i from 0 to k. Here, as usual, 0 <= ai < b for all i and ak is non-zero. Then N is palindromic if and only if ai = ak-i for all i. Zero is written 0 in any base and is also palindromic by definition.

Given any non-negative decimal integer N and a base b, you are supposed to tell if N is a palindromic number in base b.

Input Specification:

Each input file contains one test case. Each case consists of two non-negative numbers N and b, where 0 <= N <= 109 is the decimal number and 2 <= b <= 109 is the base. The numbers are separated by a space.

Output Specification:

For each test case, first print in one line "Yes" if N is a palindromic number in base b, or "No" if not. Then in the next line, print N as the number in base b in the form "ak ak-1 ... a0". Notice that there must be no extra space at the end of output.

Sample Input 1:
27 2
Sample Output 1:
Yes
1 1 0 1 1
Sample Input 2:
121 5
Sample Output 2:
No
4 4 1

将一个十进制的数字n转换为b进制的数字,判断这个数字是否为回文数

如果样例5过不了,可以试一下 0 199 这组值

#include<iostream>
using namespace std;
int main()
{
	int n,b,flag=1;
	int i=0,lim,an[1000]={0};
	cin >> n >> b;
	while(n)
	{
		an[i++]=n%b;
		n/=b;
	}
	lim=(i+1)/2;
	for(int j=0;j<lim;j++)
	{
		if(an[j]!=an[i-j-1])
		{
			flag=0;
			break;
		}
	}
	if(flag)
	{
		cout << "Yes" << endl;
		if(i==0)
			cout << n;
		for(int j=0;j<i;j++)
		{
			cout << an[j];
			if(j!=i-1)
				cout << ' ';
		}
	}
	else
	{
		cout << "No" << endl;
		for(int j=i-1;j>=0;j--)
		{
			cout << an[j];
			if(j!=0)
				cout << ' ';
		}
	}
	return 0;
}

也可以用do-while......

#include<iostream>
using namespace std;
int main()
{
	int n,b,flag=1;
	int i=0,lim,an[1000]={0};
	cin >> n >> b;
	do	
	{
		an[i++]=n%b;
		n/=b;
	}while(n);
	lim=(i+1)/2;
	for(int j=0;j<lim;j++)
	{
		if(an[j]!=an[i-j-1])
		{
			flag=0;
			break;
		}
	}
	if(flag)
	{
		cout << "Yes" << endl;
		for(int j=0;j<i;j++)
		{
			cout << an[j];
			if(j!=i-1)
				cout << ' ';
		}
	}
	else
	{
		cout << "No" << endl;
		for(int j=i-1;j>=0;j--)
		{
			cout << an[j];
			if(j!=0)
				cout << ' ';
		}
	}
	return 0;
}


查看评论

浙大 PAT 1019. General Palindromic Number (20)

1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限...
  • IAccepted
  • IAccepted
  • 2014-03-04 14:44:45
  • 1674

PAT 1019 General Palindromic Number(进制水题)

题目https://www.patest.cn/contests/pat-a-practise/1019 题意:判断将数字N转换到base进制下以后是否满足回文。 解题思路进制转换的水题,只需模拟...
  • lecholin
  • lecholin
  • 2017-06-06 22:16:42
  • 146

pat1019General Palindromic Number (20)

题意分析: (1)水题,给出一个整数和一个基底,把这个整数转化成此基底下的对应的数,判断转换后的数是不是回文数; 可能坑点: #include #include #include using n...
  • LostStephon
  • LostStephon
  • 2015-10-03 17:49:41
  • 257

PAT 甲级 1019 General Palindromic Number(简单题)

PAT 甲级 1019 General Palindromic Number(简单题)
  • Dacc123
  • Dacc123
  • 2016-05-30 17:50:28
  • 341

PAT A1019 General Palindromic Number

//ac了,自己做的,但是注意末尾无空格的处理只有一行参考了书。另外输出那里可以更简洁,因为注意到无论是还是不是,都要输出进制形式的 //break是跳出最内层的循环(while,for)或switc...
  • daisyleedq
  • daisyleedq
  • 2015-02-22 22:01:41
  • 232

1019. General Palindromic Number 解析

这个在进制的时候注意当进制大于10的时候回出现一位是多于两位的,像之前那样用字符串保存就会出问题。 #include #include #include #include using n...
  • sheepyWYY
  • sheepyWYY
  • 2017-02-03 21:54:14
  • 89

1019. General Palindromic Number (20)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu...
  • zjujqq
  • zjujqq
  • 2013-08-29 14:18:36
  • 513

pat 1019. General Palindromic Number

水题 #include using namespace std; int main() { //freopen("F:/CppProject/data/1019.txt","r",stdin...
  • sduuntion
  • sduuntion
  • 2014-11-21 10:20:43
  • 323

【PAT】1019. General Palindromic Number

注意边界数据0的输出 #include #include #include using namespace std; int main() { int n,b; cin>>n...
  • KID_LWC
  • KID_LWC
  • 2017-01-18 11:16:31
  • 68

PAT 1019. General Palindromic Number

题目链接 9.11去参加湖工大参加PAT,结果因为机房原因连不上网,被告知无法考试,于是被回退了报名费。 9.29被华为扔进资源池,至今仍然无消息。估计泡池子泡到发霉。 决定报考ZJU MSM。 以上...
  • WhereYouSink
  • WhereYouSink
  • 2016-10-01 15:33:37
  • 227
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 4429
    排名: 8442