标签:tput scan int 结果 out namespace 排序 const integer
对N个长度最长可达到1000的数进行排序。
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
33333333 11111111111111111111111111111 2222222222222222222222222222222222
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int MAX = 1000; struct BigInteger { int digit[MAX]; int size; void init() { for (int i = 0;i < MAX;i++) { digit[i] = 0; } size = 0; } void set(char str[]) { init(); int L = strlen(str); for (int i = L - 1, j = 0, t = 0, c = 1;i >= 0;i--) { t += (str[i] - ‘0‘)*c; j++; c *= 10; if (j == 4 || i == 0) { digit[size++] = t; j = 0;t = 0;c = 1; } } } void output() { for (int i = size - 1;i >= 0;i--) { if (i != size - 1) { printf("%04d", digit[i]); } else { printf("%d", digit[i]); } } printf("\n"); } bool operator < (const BigInteger A) const { if (size != A.size) { return size < A.size; } else { for (int i = size - 1; i >= 0; i--) { if (digit[i] != A.digit[i]) { return digit[i] < A.digit[i]; } } } } }E[100]; char str[1000]; int main() { int n; while (scanf("%d", &n) != EOF) { for(int i =0;i<n;i++) { scanf("%s", str); E[i].set(str); } sort(E, E + n); for (int i = 0;i<n;i++) { E[i].output(); } } return 0; }
标签:tput scan int 结果 out namespace 排序 const integer
原文地址:https://www.cnblogs.com/bernieloveslife/p/9735260.html