[PAT] A1019 General Palindromic Number

【题目】

https://pintia.cn/problem-sets/994805342720868352/problems/994805487143337984

题目大意:给定一个N和b,求N在b进制下,是否是一个回文数(Palindromic number)。其中,0<N, b<=10 ^ 9

【思路】

将n转为b进制下的数字,存储到vector<int>中,判断数组两端元素是否全部相等即可。可以倒序存储,不影响回文数的判断。

int最大约为2.14 * 10 ^ 9,不必担心int越界。

【坑】

b进制下的数字可能大于10,不能用字符串存储。用字符的话,数字+'0'可能会超出ascii表示的范围,测试点4过不了。

【代码】

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 int main()
 5 {
 6     int num, base;
 7     cin >> num >> base;
 8     vector<int>output;
 9     while (num)
10     {
11         output.push_back(num % base);
12         num = num / base;
13     }
14     bool pal = true;
15     for (int i = 0; i < output.size()/2; i++)
16     {
17         if (output[i] != output[output.size() - i - 1])
18         {
19             pal = false;
20             break;
21         }
22     }
23     if (pal) cout << "Yes" << endl;
24     else cout << "No" << endl;
25     for (int i = output.size() - 1; i >= 0; i--)
26     {
27         cout << output[i];
28         if (i > 0)cout << " ";
29     }
30     return 0;
31 }

猜你喜欢

转载自www.cnblogs.com/yue36/p/12318737.html
今日推荐