当前位置: 首页 > article >正文

PAT A1019 General Palindromic Number

1019 General Palindromic Number

分数 20

作者 CHEN, Yue

单位 浙江大学

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 ∑i=0k​(ai​bi). 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 positive 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 positive 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,和一个进制d,将n转换为d进制,判断转换后的d进制串是否是一个回文串。

/**
 * 给定一个十进制数n,和一个进制d,将n转换为d进制,判断转换后的d进制串是否是一个回文串。
*/

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

vector<int> int_str(int n, int d)
{
    vector<int> vec;
    while(n)
    {
        int mod = n % d;
        n /= d;
        vec.push_back(mod);
    }
    
    reverse(vec.begin(), vec.end());
    
    return vec;
}

bool is_level(vector<int> vec)
{
    int len = vec.size();
    for(int i=0; i<len/2; ++i)
        if(vec[i] != vec[len-1-i])
            return false;
    return true;
}

int main()
{
    int n, d;
    cin >> n >> d;
    vector<int> vec = int_str(n, d);
    
    if(is_level(vec))
        puts("Yes");
    else
        puts("No");
    
    bool flag = true;
    for(auto ele : vec)
    {
        if(flag)    flag = false;
        else cout << ' ';
        cout << ele;
    }
    
    puts("");
    
    return 0;
}


http://www.kler.cn/a/15888.html

相关文章:

  • 网络基础(4)传输层
  • Ubuntu从入门到精通(一)系统安装
  • 源码解析-Spring Eureka(更新ing)
  • 单片机智能家居火灾环境安全检测
  • 【Qt实现虚拟键盘】
  • IROS讲座:如何写出受欢迎的论文
  • 阿里云国际版ACE与国内版ACE区别
  • 百万赞同:网络安全为什么缺人? 缺什么样的人?
  • 计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?
  • 界面控件DevExpress WinForm的垂直网格,让数据展示更灵活(二)
  • EBS R12.1 注册客户化应用的步骤
  • AlgoC++第八课:手写BP
  • “华为杯”第十七届中国研究生 数学建模竞赛-【华为杯】D题:无人机集群协同对抗(附优秀论文及python代码实现)
  • Redis常见问题/应用场景/面试题总结(含答案)
  • seurat -- 关于DE gene的讨论
  • vue性能优化之虚拟列表滚动
  • 第七章 单行函数
  • 荔枝派Zero(全志V3S)驱动开发之串口
  • 使用docker部署prometheus最新版本2.43.0
  • 你买票了吗?五一火车票发售量创历史新高,车票总发售2209万张票
  • python之面向对象练习题(七)
  • 芯片封装基本流程及失效分析处理方法
  • 通知所有员工所需的时间
  • 【Android -- 开源库】数据库 Realm 的基本使用
  • Mysql数据库的备份恢复
  • 赞!数字中国建设峰会上的金仓风采