【PAT-A】1060. Are They Equal (25)
2018-03-04 20:33
363 查看
这题还好吧……没有特别坑的测试点
就是要注意用科学计数法的话可能开不了那么大,这里N可能到100.
测试点3对应小数点后面的处理 比如 2 0.0001 0.0000001
测试点4 一开始有0 比如输入数字 01.1 这种
测试点6对应0 0.0之类的情况 注意输出是 0.00…*10^0
然后我一开始是把判断是否相等的函数和输出的函数分了开来,至少多了一倍的代码量,感觉是傻的……
就是要注意用科学计数法的话可能开不了那么大,这里N可能到100.
测试点3对应小数点后面的处理 比如 2 0.0001 0.0000001
测试点4 一开始有0 比如输入数字 01.1 这种
测试点6对应0 0.0之类的情况 注意输出是 0.00…*10^0
然后我一开始是把判断是否相等的函数和输出的函数分了开来,至少多了一倍的代码量,感觉是傻的……
Code
// @author Birdy 2018.3.4 /* PAT 1060 Test Point 3 2 0.00001 0.00000001 Test Point 6 0.0000 */ #include<iostream> #include<string> using namespace std; string remove0(string M) { // remove 0 with no meanings int i = 0; string t; bool flag = true; while (i < M.length()) { if (M.at(i) != '0') { t = M.substr(i); break; } i++; } int len = t.length(); for (int j = t.length() - 1; j >= 0; j--) { char num = t.at(j); if (num == '0'&&flag) { len--; } else if (num != '0') { flag = false; } if (t.at(j) == '.') { return t.substr(0, len); } } return t; } void print_char(char m, int& num, int N, string &result) { if (num < N) { num++; result += m; } } string printnumber(string M, int N) { //space in the front M = remove0(M); string result(" 0."); int x = 0, i = 0, num_print = 0; bool flag = false; bool beforepoint = true; while (num_print < N || i < M.length()) { if (M.length() <= i) { print_char('0', num_print, N, result); } else { char number = M.at(i); if ('0' != number && '.' != number) { flag = true; } if ('.' == number) { beforepoint = false; } else if (flag) { print_char(number, num_print, N, result); beforepoint ? x++ : 0; } else { beforepoint ? 0 : x--; } } i++; } result += "*10^"; result += to_string(x); return result; } int main() { int N; string A, B; cin >> N >> A >> B; A = printnumber(A, N); B = printnumber(B, N); if (A == B) { cout << "YES"<<A; } else { cout << "NO"<<A<<B; } system("pause"); return 0; }
相关文章推荐
- PAT (Basic Level) Practise (中文)1010. 一元多项式求导 (25)
- PAT (Advanced) 1075. PAT Judge (25)
- pat 1020. Tree Traversals (25)
- 1048. Find Coins (25)-PAT甲级真题
- PAT刷题:1017. Queueing at Bank (25)
- PAT(A) - 1086. Tree Traversals Again (25)
- 【C++】PAT(advanced level)1051. Pop Sequence (25)
- PAT 甲级1012. The Best Rank (25)
- 【C++】PAT(advanced level)1071. Speech Patterns (25)
- 1066. Root of AVL Tree (25)【AVL树】——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1009. Product of Polynomials (25)
- 【C++】PAT(basic level)1010. 一元多项式求导 (25)
- PAT 甲级 1130. Infix Expression (25)
- PAT 1006. Sign In and Sign Out (25)
- pat 1085. Perfect Sequence (25)
- PAT - 甲级 - 1003. Emergency (25)(Dijkstra)
- 浙大2013复试:PAT 1055 The World's Richest (25)
- PAT 1051. Pop Sequence (25)
- PAT 1060. Are They Equal (25)
- PAT 1094. The Largest Generation (25)(bfs遍历)