1019. General Palindromic Number (20)
2016-07-05 10:43
309 查看
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:
Sample Output 1:
Sample Input 2:
Sample Output 2:
给定一个非负整数num和一个基数base,判断num以base为基数时得到的数是否是对称的。直接求得以b为基数时num的每一位数,然后判断是否对称即可。
代码:
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdlib>
#include <cstdio>
using namespace std;
bool ispal(vector<int>v)
{
int l=0,r=v.size()-1;
while(l<r)
{
if(v[l++]!=v[r--]) return false;
}
return true;
}
int main()
{
int num,base;
cin>>num>>base;
if(num<=1) printf("Yes\n%d",num);
else
{
vector<int>digit;
while(num>0)
{
digit.push_back(num%base);
num/=base;
}
if(ispal(digit)) printf("Yes\n");
else printf("No\n");
int n=digit.size()-1;
cout<<digit
;
for(int i=n-1;i>=0;i--)
{
cout<<" "<<digit[i];
}
}
}
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
给定一个非负整数num和一个基数base,判断num以base为基数时得到的数是否是对称的。直接求得以b为基数时num的每一位数,然后判断是否对称即可。
代码:
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdlib>
#include <cstdio>
using namespace std;
bool ispal(vector<int>v)
{
int l=0,r=v.size()-1;
while(l<r)
{
if(v[l++]!=v[r--]) return false;
}
return true;
}
int main()
{
int num,base;
cin>>num>>base;
if(num<=1) printf("Yes\n%d",num);
else
{
vector<int>digit;
while(num>0)
{
digit.push_back(num%base);
num/=base;
}
if(ispal(digit)) printf("Yes\n");
else printf("No\n");
int n=digit.size()-1;
cout<<digit
;
for(int i=n-1;i>=0;i--)
{
cout<<" "<<digit[i];
}
}
}
相关文章推荐
- 微软Word 2007数学插件 Microsoft Math 提供下载
- 关于C# Math 处理奇进偶不进的实现代码
- JavaScript Math 对象常用方法总结
- JavaScript中的Math.SQRT1_2属性使用简介
- JavaScript Math.ceil() 函数使用介绍
- 与Math.pow 相反的函数使用介绍
- JavaScript中使用指数方法Math.exp()的简介
- JavaScript使用Math.Min返回两个数中较小数的方法
- Ajax获取页面被缓存的解决方法
- JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
- JavaScript中Math对象使用说明
- javascript对象之内置对象Math使用方法
- 基于java math API 的详细解释说明
- 简介JavaScript中用于处理正切的Math.tan()方法
- 浅谈JavaScript中的Math.atan()方法的使用
- PHP内置的Math函数效率测试
- 在JavaScript中使用对数Math.log()方法的教程
- JavaScript中用于四舍五入的Math.round()方法讲解
- Javascript之Math对象详解
- 简介JavaScript中Math.LOG10E属性的使用