目录
🧡1019 General Palindromic Number(20)
💟这里是CS大白话专场,让枯燥的学习变得有趣!
💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!
💟好记性不如烂键盘,自己总结不如收藏别人!
💌数字&字符串处理也是PAT的考试重点,记录一下常用易混语法o(╥﹏╥)o
🧡1019 General Palindromic Number(20)
题目链接:PTA | 程序设计类实验辅助教学平台
💌将十进制数N转换成b进制数,判断其是否为对称数。
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector<int> s; //存储b进制数
void trans(int N,int b){
int i=0;
while(N){
s.push_back(N%b);
N = N/b;
}
}
void out(vector<int> s){
//倒序输出
for(int i=s.size()-1;i>=0;i--){
cout << s[i];
if(i) cout << " ";
else cout << endl;
}
}
int main(){
int N,b;
cin >> N >> b;
trans(N,b);
for(int i=0;i<s.size()/2;i++){
if(s[i]==s[s.size()-1-i]) continue;
else {
cout << "No" << endl;
out(s);
return 0;
}
}
cout << "Yes" << endl;
out(s);
return 0;
}
🧡1024 Palindromic Number(25)
题目链接:PTA | 程序设计类实验辅助教学平台
💌给出一个数N,经过不多于K次的翻转相加,判断是否会生成对称数。
#include <iostream>
#include <algorithm>
using namespace std;
string N;
void add(string t) {
int len=N.length(),add=0;
for(int i=0;i<len;i++){
N[i] = N[i]+t[i]+add-'0';
if(N[i] > '9') {
N[i] = N[i] - 10;
add = 1;
}
else add = 0;
}
if(add) N.append("1");
reverse(N.begin(), N.end());
}
int main() {
int K, k;
cin >> N >> K;
for(k=0;k<=K;k++){
string t=N;
reverse(t.begin(), t.end());
if(N == t || k == K) break;
add(t);
}
cout << N << endl << k << endl;
return 0;
}
🧡1100 Mars Numbers(20)
💌翻译数字与火星文。
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
string low[13] = {"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
string high[13] = {" ","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
void EarthToMars(int t){
int a = t/13;
int b = t%13;
if(a&&b) cout << high[a] << " " << low[b] << endl;
//注意低位为0时不用输出
else if(a&&!b) cout << high[a] << endl;
else cout << low[b] << endl;
}
void MarsToEarth(string s){
int t1=0,t2=0;
//截取高位(若没有高位,则为低位)
string s1 = s.substr(0,3),s2;
//若有高位,截取低位
if(s.length()>4) s2 = s.substr(4,3);
for(int i=1;i<13;i++){
if(s1==low[i] || s2==low[i]) t2 = i;
if(s1==high[i]) t1 = i;
}
cout << t1*13+t2 << endl;
}
int main(){
int N;
string s;
cin >> N;
getchar();
for(int i=0;i<N;i++){
//读取一行
getline(cin, s);
//如果是地球字符
if(s[0]>='0'&&s[0]<='9')
EarthToMars(stoi(s));
else
MarsToEarth(s);
}
return 0;
}
🧡常用语法
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main(){
//string 转 int
string a;
cin >> a;
cout << stoi(a); //整体转换
int b = a[0]-'0'; //计算单个数值
cout << b;
getchar(); //读取一位
string s;
getline(cin, s); //读取一行
s.append("1"); //字符串扩展
reverse(s.begin(), s.end()); //字符串翻转
s.substr(0,3); //从0位开始截取前3位
return 0;
}