PAT 1019. General Palindromic Number (20)
2015-08-11 15:23
369 查看
1019. General Palindromic Number (20)
时间限制400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
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 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的范围都在10^9内,所以用int 就可以解决,较为简单。
代码如下:
#include <iostream> #include <algorithm> #include <map> #include <vector> using namespace std; int main(int argc, char** argv) { vector<int> number; int N,b; cin>>N>>b; if(N<b) { cout<<"Yes"<<endl; cout<<N<<endl; return 0; } int quotient,rem; quotient=N; while(quotient>0) { rem=quotient%b; number.push_back(rem); quotient/=b; } int size=number.size(); int i; for(i=0;i<=size/2;i++) { if(number[i]!=number[size-i-1]) break; } if(i<=size/2) cout<<"No"<<endl; else cout<<"Yes"<<endl; for(int k=size-1;k>0;k--) cout<<number[k]<<" "; cout<<number[0]; return 0; }
相关文章推荐
- POJ 2516 Minimum Cost(最小费用最大流-mcmf)
- IOS UITableView索引排序功能
- Python版RenameURLCode
- 随机颜色
- 贝叶斯推断及其互联网应用(二):过滤垃圾邮件
- IOS--XML解析
- DIY一个万能小程序
- 寻找最小的k个数(update)
- SQL 维护计划
- win10鼠标右键菜单在左边该怎么设置到右边去?
- 如何检测UIWebView的滚动?
- vim括号匹配和跳转技巧
- NSIS 小问题
- bootstrap 导航适配屏幕+滚动监听+JQuery删除块
- 纯虚函数
- mongodb连接不及时关闭的错误
- hdu 2553 N皇后问题
- iOS安全系列之一:HTTPS
- Python中逗号的作用
- js 图片放缩