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.
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.
27 2
Yes<br/>1 1 0 1 1
package go.jacob.day1016; import java.util.ArrayList; import java.util.Scanner; /** * 1019. General Palindromic Number (20) * * @Jacob */ public class Demo1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(), base = sc.nextInt(); ArrayList<Integer> res = decimalToBase(N, base); boolean flag = true; int left = 0, right = res.size() - 1; while (left < right) { //Integer为包装类型,判断是否相等要用equals if (!res.get(left).equals(res.get(right))) { flag = false; break; } left++; right--; } if (flag) System.out.println("Yes"); else System.out.println("No"); System.out.print(res.get(res.size() - 1)); for (int i = res.size() - 2; i >= 0; i--) { System.out.print(" " + res.get(i)); } sc.close(); } /* * 将十进制转成base进制 要考虑N等于0的情况 */ private static ArrayList<Integer> decimalToBase(int N, int base) { ArrayList<Integer> res = new ArrayList<Integer>(); if (N == 0) res.add(0); while (N != 0) { res.add(N % base); N /= base; } return res; } }
#include<iostream>
using namespace std;
int main() {
int N,b,a[32]={0};
bool p=true;
cin>>N>>b;
int i;
for(i=0;N!=0;i++){
a[i]=N%b;
N/=b;
}
for(int j=0;j<i;j++){
if(a[j]!=a[i-1-j]){
p=false;
break;
}
}
cout<<(p?"Yes":"No")<<endl;
cout<<a[i-1];
for(int m=i-2;m>=0;m--){
cout<<" "<<a[m];
}
return 0;
}
#include <cstdio>
#include <vector>
using namespace std;
// 十进制转r进制
vector<int> ten2n(int n, const int &r) {
vector<int> ans;
do {
ans.push_back(n % r);
n /= r;
} while (n);
return ans; // 逆序的
}
// 判断回文
bool isP(const vector<int> &V) {
for (int i = 0; i < V.size() / 2; ++i)
if (V[i] != V[V.size() - 1 - i]) return false;
return true;
}
int main() {
// freopen("in.txt", "r", stdin);
int n, r;
scanf("%d%d", &n, &r);
vector<int> V = ten2n(n, r);
if (isP(V)) printf("Yes\n");
else printf("No\n");
for (int i = V.size() - 1; i >= 0; --i) {
printf("%d", V[i]);
if (i > 0) printf(" ");
}
return 0;
} 第一次排第一,留个纪念:)
out = []
n,b = map(int,input().split())
while n>=b:
out.append(n%b)
n=n//b
out.append(n)
out1 = list(map(int,out))
out.reverse()
if out1==out:
print('Yes')
else:
print('No')
print(' '.join(map(str,out))) #include<iostream>
#include<string>
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
vector<int> tmp;
int N,base;
scanf("%d %d",&N,&base);
if(N==0)
{
cout<<"Yes"<<endl<<"0"<<endl;
return 0;
}
while(1)
{
int left = N%base;
//cout<<left<<endl;
tmp.push_back(left);
N =N/base;
if(N<base)
{
tmp.push_back(N);
break;
}
}
for(int i=0;i<tmp.size()/2;i++)
{
int k = tmp.size()-i-1;
if(tmp[i]!=tmp[k])
{
cout<<"No"<<endl;
for(int j=tmp.size()-1;j>=0;j--)
{
cout<<tmp[j];
if(j==0)
cout<<endl;
else
cout<<" ";
}
return 0;
}
}
cout<<"Yes"<<endl;
for(int i=tmp.size()-1;i>=0;i--)
{
cout<<tmp[i];
if(i==0)
cout<<endl;
else
cout<<" ";
}
return 0;
}
#include <cstdio>
int main(void){
int N, b;
scanf("%d%d", &N, &b);
int n[32];
int i = 0;
do{
n[i++] = N % b;
N = N / b;
}while(N != 0);
bool flag = 1;
for(int j = 0; j < i / 2; j++){
if(n[j] != n[i - 1 - j]) {
flag = 0;
break;
}
}
if(flag == 0) printf("No\n");
else printf("Yes\n");
for(int p = i - 1; p >= 0; p--){
printf("%d", n[p]);
if(p != 0) printf(" ");
}
return 0;
}
import java.util.ArrayList;
import java.util.Scanner;
//注意0
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int d=in.nextInt();
ArrayList<Integer> list=new ArrayList<Integer>();
if(n==0){
list.add(0);
}
while(n!=0){
list.add(n%d);
n/=d;
}
int size=list.size();
Boolean f=true;
for(int i=0;i<size/2;i++){
if(!list.get(i).equals(list.get(size-1-i))){
f= false;
break;
}
}
if(f){
System.out.println("Yes");
}else System.out.println("No");
String s="";
for(int i=size-1;i>=0;i--){
s+=(list.get(i)+" ");
}System.out.println(s.trim());
}
}
#include<bits/stdc++.h>
using namespace std;
const int Max=500;
int main() {
int n,b,a[Max],i=0;
cin>>n>>b;
if(n==0) {
cout<<"Yes"<<endl<<0<<endl;
} else {
while(n!=0) {
a[i++]=n%b;
n/=b;
}
int j;
for(j=i-1; j>=i/2; --j) {
if(a[j]!=a[i-1-j]) {
break;
}
}
if(j==i/2-1) {
cout<<"Yes"<<endl;
} else {
cout<<"No"<<endl;
}
for(int k=i-1; k>=0; k--) {
cout<<a[k]<<" ";
}
}
return 0;
} #include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int n,b;
cin>>n>>b;
if(n==0) {
cout<<"Yes"<<endl<<0;
return 0;
}
vector<int> ans,t;
if(!n){
cout<<"Yes"<<endl;
}
else{
while(n){
ans.push_back(n%b);
n/=b;
}
t=ans;
reverse(ans.begin(),ans.end());
bool flag=0;
for(int i=0;i<(int)ans.size()/2;i++){
if(ans[i]!=t[i]){
flag=1;
break;
}
}
if(flag==0) cout<<"Yes";
else cout<<"No";
cout<<endl;
for(int i=0;i<(int)ans.size();i++){
if(i==0) cout<<ans[i];
else cout<<" "<<ans[i];
}
}
}
#include<iostream>
#include<vector>
using namespace std;
void palindromicnumber() {
long long a, b;
cin >> a >> b;
vector<long long >q, p;
if (a == 0) {
q.push_back(0);
}
while (a != 0) {
q.push_back(a % b);
a /= b;
}
p = q;
bool flag = true;
flag = q.front() == q.back();
while (q.size()!=1) {
flag = q.front() == q.back();
if (flag) {
q.erase(q.begin()); q.erase(q.end()-1);
}
else
{
break;
}
}
if (flag == true) {
cout << "Yes" << endl;
while (p.empty() != true) {
if (p.size() != 1) {
cout << p.front() << " ";
p.erase(p.begin());
}
else
{
cout << p.front(); p.erase(p.begin());
}
}
//cout << p.front();
}
else {
cout << "No" << endl;
while (p.empty() != true) {
if (p.size() != 1) {
cout << p.back() << " ";
p.erase(p.end()-1);
}
else
{
cout << p.back();
p.erase(p.end()-1);
}
}
}
}
//27 2 121 5
int main()
{
// helloworldforu();
palindromicnumber();
return 0;
} 思路: 就是简单的判断和进制转换。
#include <iostream>
#include <vector>
using namespace std;
vector<long long> GenerNum(long long n, long long b)
{
vector<long long> v;
long long remainder;
if (n == 0)
{
v.push_back(0);
}
while (n)
{
remainder = n % b;
n = n / b;
v.insert(v.begin(), remainder);
}
return v;
}
bool JudgePalindromic(vector<long long>& v)
{
bool judge = true;
for (int i = 0; i < v.size(); i++)
{
if(v[i] != v[v.size() - 1 -i])
{
judge = false;
}
}
return judge;
}
int main()
{
long long n, b;
while (cin >> n >> b)
{
vector<long long> v;
v = GenerNum(n, b);
if (JudgePalindromic(v))
{
cout << "Yes" << endl;
for (int c = 0; c < v.size(); c++)
{
cout << v[c];
if (c != v.size() - 1)
cout << " ";
else
cout << endl;
}
}
else
{
cout << "No" << endl;
for (int c = 0; c < v.size(); c++)
{
cout << v[c];
if (c != v.size() - 1)
cout << " ";
else
cout << endl;
}
}
}
}
进制转换,注意输出 #-*-coding:utf-8 -*- while True: try: N,b=map(int,raw_input().split()) s=[] if N==0:s=['0'] else: while N>0: a=N%b N=N//b s.append(str(a)) if s[::-1]==s: print 'Yes' else:print 'No' print ' '.join(s[::-1]) except:break
#include<cstdio>
#include<algorithm>
using namespace std;
int num[40],sz=0,n,b;
bool same(){
for(int i=0;i<sz/2;i++){
if(num[i]!=num[sz-1-i])
return false;
}
return true;
}
void solve(){
while(n){
num[sz++]=n%b;
n/=b;
}
}
int main(){
scanf("%d%d",&n,&b);
solve();
if(same()){
puts("Yes");
}
else{
puts("No");
}
for(int i=sz-1;i>0;i--){
printf("%d ",num[i]);
}
printf("%d\n",num[0]);
return 0;
}
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,x;
cin>>n>>x;
int a[1000]={};
int k=0;
do{
a[k++]=n%x;
n=n/x;
}while(n);
int f=1;
for(int i=0;i<k;i++)
{
if(a[i]!=a[k-1-i])
{f=0;
break;
}
}
if(f)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
for(int j=k-1;j>=0;j--)
{
if(j)
cout<<a[j]<<" ";
else
cout<<a[j]<<endl;
}
return 0;
}
def numSystem(num, base):
rlt = []
while num > 0:
rlt.append(num%base)
num /= base
return rlt
num, base = map(int, raw_input().strip().split())
if num:
rlt = numSystem(num, base)
rlt_reverse = rlt[:]; rlt_reverse.reverse()
if rlt == rlt_reverse:
print('Yes')
else:
print('No')
rlt_reverse = map(str, rlt_reverse)
print(' '.join(rlt_reverse))
else:
print('Yes')
print(0)