L1-025. 正整数A+B
2017-03-14 17:03
375 查看
本题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。
输入格式:
输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。
注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。
输出格式:
如果输入的确是两个正整数,则按格式“A + B = 和”输出。如果某个输入不合要求,则在相应位置输出“?”,显然此时和也是“?”。
输入样例1:
输出样例1:
输入样例2:
输出样例2:
输入样例3:
输出样例3:
注意题目条件,比较坑的是a可能为空。
测试点:
input1
1
output1
? + 1 = ?
input2
0 0
output2
? + ? = ?input3
1000 1001
output3
1000 + ? = ?
输入格式:
输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。
注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。
输出格式:
如果输入的确是两个正整数,则按格式“A + B = 和”输出。如果某个输入不合要求,则在相应位置输出“?”,显然此时和也是“?”。
输入样例1:
123 456
输出样例1:
123 + 456 = 579
输入样例2:
22. 18
输出样例2:
? + 18 = ?
输入样例3:
-100 blabla bla...33
输出样例3:
? + ? = ?
注意题目条件,比较坑的是a可能为空。
测试点:
input1
1
output1
? + 1 = ?
input2
0 0
output2
? + ? = ?input3
1000 1001
output3
1000 + ? = ?
#include <iostream> #include<string> #include<cmath> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; string change(string b); int transform(string a); int main(int argc, char** argv) { string a="",b="",str; getline(cin,str); /*分离出a和b*/ int i,flag=0; for(i=0;i<str.length();i++){ if(!flag){ if(str[i]==' '){ flag=1;continue; } else a+=str[i]; } else b+=str[i]; } // cout<<a<<":"<<b<<"!\n"; b=change(b); // cout<<a<<":"<<b<<"!\n"; int op1=transform(a),op2=transform(b); flag=0; if(op1==0){ cout<<"? + "; flag=1; } else cout<<op1<<" + "; if(op2==0){ cout<<"? = "; flag=1; } else cout<<op2<<" = "; if(flag) cout<<"?\n"; else{ cout<<op1+op2<<endl; } return 0; } //除去b头尾空格 string change(string b){ int flag=0,i; string c=""; int s=0,e=0; for(i=0;i<b.length();i++){ if(b[i]!=' '){ break; } ++s; } for(i=b.length()-1;i>=0;i--){ if(b[i]!=' '){ break; } ++e; } for(i=s;i<b.length()-e;i++){ c+=b[i]; } //cout<<s<<","<<e<<" "<<c.length()<<":"<<c; return c; } //将string类型转换为int int transform(string a){ int i,op=0; if(a.length()>=5) return 0; for(i=0;i<a.length();i++){ if(a[i]<'0'||a[i]>'9'){ return 0; } op+=(a[i]-'0')*pow(10,a.length()-i-1); } if(op>1000) return 0; return op; }
相关文章推荐
- L1-025. 正整数A+B
- L1-025. 正整数A+B-PAT团体程序设计天梯赛GPLT
- L1-025. 正整数A+B
- L1-025. 正整数A+B
- L1-025. 正整数A+B
- PAT 天梯赛 L1-025. 正整数A+B 【字符串处理】
- L1-025. 正整数A+B C++
- L1-025. 正整数A+B
- L1-025. 正整数A+B
- L1-025. 正整数A+B(C语言将字符串数字转换成整型数函数)
- 天梯赛 L1-025. 正整数A+B
- (字符串读入问题+解析)L1-025. 正整数A+B
- L1-025. 正整数A+B
- L1-025. 正整数A+B
- [PAT][GPLT][CCCC]L1-025.正整数A+B
- Java - PAT - L1-025. 正整数A+B (天梯赛决赛题目)
- PAT-L1-025. 正整数A+B
- L1-025. 正整数A+B
- L1-025. 正整数A+B
- 天梯赛L1-025正整数A+B