【PAT甲级】1038. Recover the Smallest Number (30)
2016-10-24 11:04
441 查看
注:比较大小时要用长整型 注2:注意数字片段中可能存在全为0的片段,要跳过这些开头片段,并对第一个非零片段进行前几位0消除;如果片段全为0,则输出0;
#include <stdio.h> #include <deque> #include <algorithm> #include <cmath> #include <string.h> using namespace std; typedef struct Seg { char digit[10]; int len; int num; } Seg; int getNum(char *a, int l) { int sum = 0; for (int i = 0; i < l; i++) { sum = sum * 10 + a[i] - '0'; } return sum; } bool com(Seg a, Seg b) { long long int aa = (long long int)(a.num); long long int bb = (long long int)(b.num); long long int x = aa * pow(10, b.len) + bb; long long int y = bb * pow(10, a.len) + aa; if (x < y) return true; return false; } int main(int argc, char *argv[]) { deque<Seg> q; int n; scanf("%d", &n); int i, j; for (i = 0; i < n; i++) { Seg s; scanf("%s", s.digit); s.len = strlen(s.digit); s.num = get 4000 Num(s.digit, s.len); q.push_back(s); } sort(q.begin(), q.end(), com); while (!q.empty() && q.front().num == 0) q.pop_front();//注意有可能前面几个数字片段全为0 if (!q.empty()) { printf("%d", q[0].num); for (j = 1; j < int(q.size()); j++) { printf("%s", q[j].digit); } printf("\n"); } else { printf("0\n"); } return 0; }
相关文章推荐
- PAT甲级 1004. Counting Leaves (30)
- PAT(甲级)1004. Counting Leaves (30)
- 1076. Forwards on Weibo (30) PAT 甲级
- pat 甲级 1053. Path of Equal Weight (30)
- PAT - 甲级 - 1123. Is It a Complete AVL Tree (30)
- PAT 甲级 1095. Cars on Campus (30)
- 浙大pat | 浙大pat 牛客网甲级 1010 Build A Binary Search Tree (30) 二叉搜索树
- PAT 甲级 1119. Pre- and Post-order Traversals (30)
- 1080. Graduate Admission (30)-PAT甲级真题
- PAT甲级题解-1057. Stack (30)-树状数组
- 1034. Head of a Gang (30)-PAT甲级真题
- PAT - 甲级 - 1119. Pre- and Post-order Traversals (30) (递归建树)
- 1123. Is It a Complete AVL Tree (30)-PAT甲级真题
- PAT 1139. First Contact (30)-PAT甲级真题
- PAT甲级 1004.Counting Leaves (30) 题目翻译与答案
- 1099. Build A Binary Search Tree (30)PAT甲级
- pat 甲级 1064. Complete Binary Search Tree (30)
- pat 甲级 1049. Counting Ones (30)
- pat 甲级 1034. Head of a Gang (30)
- PAT 甲级 1026. Table Tennis (30)