【志银】NYOJ《题目524》A-B Problem
2018-06-17 23:56:40来源:未知 阅读 ()
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=860
My思路:
先用两个字符串储存这两个实数,然后再用另外两个字符串储存去掉符号和前后多余的0后的新"实数",最后只需要比较两个化简后的新字符就ok了。
My代码实现:
1 #include<iostream> 2 using namespace std; 3 string simplify(string s) { //去字符串s的正负号和首尾多余的0 4 string a; 5 int k = s.size()-1, l = 0, t = 0; 6 for(int i = 0; i < s.size(); i++) //判断是否是小数,如果是小数就需要去除尾部多余的0 7 if(s[i] == '.') { 8 t = 1; 9 break; 10 } 11 if(s[0] == '+' || s[0] == '-') l++; //去除符号 12 while(s[l] == '0') l++; //去除前面多余的0 13 //cout << l << endl; 14 if(t) { //去除后面多余的0 15 while(s[k] == '0') k--; 16 } 17 if(s[k] == '.') k--; 18 //cout << k << endl; 19 while(l <= k) a += s[l++]; 20 return a; 21 } 22 int main() { 23 //string x = "-002540000.0000025000000"; 24 //cout << simplify(x); 25 string A, B, a, b; 26 char fa, fb; 27 while(cin >> A >> B) { 28 a = simplify(A); //去除符号和首尾多余的0 29 b = simplify(B); 30 //cout << a << "\n" << b << endl; 31 if(A[0] != '+' && A[0] != '-') fa = '+'; //正负号拿出来单独判断 32 else fa = A[0]; 33 if(B[0] != '+' && B[0] != '-') fb = '+'; 34 else fb = B[0]; 35 if(((fa == '+' && fb == '-') || (fa == '-' && fb == '+')) && (a != "" && b != "")) cout << "NO\n"; //这里千万要考虑+0=-0的情况 36 else { 37 int i, p = 1; 38 for(i = 0; i < a.size() && i < b.size(); i++) 39 if(a[i] != b[i]) { 40 cout << "NO\n"; 41 p = 0; 42 break; 43 } 44 if(i == b.size() && i == a.size()) cout << "YES\n"; 45 else if(p) cout << "NO\n"; 46 } 47 } 48 }
开始写于:2016.7.31 ----志银
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 【志银】NYOJ《题目490》翻译 2018-11-05
- NYOJ1238 最小换乘 (dijkstra) 2018-09-05
- 【志银】NYOJ《题目529》flip 2018-06-17
- nyoj-一笔画问题-欧拉图+联通判定 2018-06-17
- 【志银】NYOJ《题目490》翻译 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash