PAT甲级1019 General Palindromic Number (20分)|C++实现
程序员文章站
2022-06-07 14:11:53
...
一、题目描述
Input Specification:
Output Specification:
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
二、解题思路
这道题不难,考的也就只有数制转换。具体细节写在代码注释中了。
三、AC代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long LL;
const int maxn = 100010;
LL store[maxn] = {0}; //用于存放每一位的数
int main()
{
LL n, d;
scanf("%lld%lld", &n, &d);
int digit = 0; //标记位数
if(n == 0)
digit++;
while(n != 0)
{
store[digit++] = n%d;
n /= d;
}
bool flag = true; //标志是否为回文数
for(LL i=0; i<digit; i++)
{
if(store[i] != store[digit-1-i]) //检验是否相等
{
flag = false;
break;
}
}
flag ? printf("Yes\n") : printf("No\n");
for(LL i=digit-1; i>=0; i--)
{
if(i == digit-1) printf("%lld", store[i]);
else printf(" %lld", store[i]);
}
return 0;
}