// 1079 延迟的回文数 v1
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string reverse(string str){
string rev;
rev=str;
for(int i=0;i<str.length();i++)
rev[i] = str[str.length()-1-i];
return rev;
}
int IsPal(string str){
int flag=1;
for(int i=0;i<str.length()/2;i++){
if(str[i]!=str[str.length()-i-1]){
flag=0;
break;
}
}
return flag;
}
string Pal(string str1,string str2){
// string pal=" ";
string pal;
pal=str1; //vital;
int c=0;
for(int i=0;i<str1.length();i++){
c=c+str1[i]-'0'+str2[i]-'0';
pal[i]=c%10+'0';
// cout<<pal[i];
c/=10;
}
if(c) pal+=c+'0';
reverse(pal.begin() ,pal.end() );
return pal;
}
int main(){
string str,rev="",pal=""; cin>>str; //input is char type
int cnt=0;
rev=reverse(str);
// cout<<rev<<endl;
pal=Pal(str,rev);
// cout<<pal<<endl;
// cout<<IsPal(pal);
while(cnt<10){
rev=reverse(str);
pal=Pal(str,rev);
if(IsPal(pal)){ //pal
cout<<str<<" + "<<rev<<" = "<<pal<<endl;
cout<<pal<<" is a palindromic number.";
break;
}
else{
cout<<str<<" + "<<rev<<" = "<<pal<<endl;
}
str=pal;
cnt++;
}
if(cnt==10) cout<<"Not found in 10 iterations.";
return 0;
}
PAT乙级1079测试点2/3/4提示答案错误,有哪些情况未考虑到?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Italink 2018-11-20 11:00关注
如果一开始输入就为回文,直接输出,你可以修改一下判断顺序,或者直接先判断一次
#include <iostream> #include <string> #include <algorithm> using namespace std; string reverse(string str) { string rev; rev = str; for (int i = 0; i < str.length(); i++) rev[i] = str[str.length() - 1 - i]; return rev; } int IsPal(string str) { int flag = 1; for (int i = 0; i < str.length() / 2; i++) { if (str[i] != str[str.length() - i - 1]) { flag = 0; break; } } return flag; } string Pal(string str1, string str2) { // string pal=" "; string pal; pal = str1; //vital; int c = 0; for (int i = 0; i < str1.length(); i++) { c = c + str1[i] - '0' + str2[i] - '0'; pal[i] = c % 10 + '0'; // cout<<pal[i]; c /= 10; } if (c) pal += c + '0'; reverse(pal.begin(), pal.end()); return pal; } int main() { string str, rev = "", pal = ""; cin >> str; //input is char type int cnt = 0; if (IsPal(str)) { //pal cout << str << " is a palindromic number."; } else { rev = reverse(str); // cout<<rev<<endl; pal = Pal(str, rev); // cout<<pal<<endl; // cout<<IsPal(pal); while (cnt < 10) { rev = reverse(str); pal = Pal(str, rev); if (IsPal(pal)) { //pal cout << str << " + " << rev << " = " << pal << endl; cout << pal << " is a palindromic number."; break; } else { cout << str << " + " << rev << " = " << pal << endl; } str = pal; cnt++; } if (cnt == 10) cout << "Not found in 10 iterations."; } return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥30 用arduino开发esp32控制ps2手柄一直报错
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题