链接:http://www.patest.cn/contests/pat-a-practise/1073
明天就考试了,圆神保佑萌萌哒~
scientific notation,科学记数法,分几种情况进行判断,主要是exponent的部分,如果exponent小于0的话,需要在前面添加0,如果exponent大于0的话,可能在后面添加0.想清楚了不难的。
1 #include <fstream> 2 #include <iostream> 3 #include <vector> 4 #include <string> 5 #include <stack> 6 7 using namespace std; 8 9 //#define OJ 10 11 #ifdef OJ 12 #define fin cin 13 #else 14 ifstream fin("in.txt"); 15 #endif 16 17 struct Node{ 18 int cur_address; 19 int val; 20 int next_address; 21 }; 22 23 int main(){ 24 string start; 25 int n, k; 26 fin >> start >> n >> k; 27 28 vector<Node> nodes(100000); 29 30 for (int i = 0; i < n; i++){ 31 Node tmp; 32 string s1, s2; 33 34 fin >> s1 >> tmp.val >> s2; 35 tmp.cur_address = atoi(s1.c_str()); 36 tmp.next_address = atoi(s2.c_str()); 37 38 nodes[tmp.cur_address] = tmp; 39 } 40 41 int start_idx = atoi(start.c_str()); 42 int cur_address = start_idx; 43 vector<int> path; 44 45 while (start_idx != -1){ 46 path.push_back(start_idx); 47 start_idx = nodes[start_idx].next_address; 48 } 49 50 vector<int> res; 51 int idx = 0; 52 n = path.size(); 53 for (; idx + k - 1 < n; idx += k){ 54 stack<int> node_stack; 55 for (int i = 0; i < k; i++){ 56 node_stack.push(path[idx + i]); 57 } 58 while (!node_stack.empty()){ 59 int tmp = node_stack.top(); 60 res.push_back(tmp); 61 node_stack.pop(); 62 } 63 } 64 for (; idx < n; idx++){ 65 res.push_back(path[idx]); 66 } 67 68 for (int i = 0; i < n - 1; i++){ 69 printf("%05d %d %05d ", nodes[res[i]].cur_address, nodes[res[i]].val, nodes[res[i + 1]].cur_address); 70 } 71 printf("%05d %d %d ", nodes[res[n - 1]].cur_address, nodes[res[n - 1]].val, -1); 72 73 return 0; 74 }