1190.大整数排序
标签:tput scan int 结果 out namespace 排序 const integer
- 题目描述:
-
对N个长度最长可达到1000的数进行排序。
- 输入:
-
输入第一行为一个整数N,(1接下来的N行每行有一个数,数的长度范围为1每个数都是一个正数,并且保证不包含前缀零。
- 输出:
-
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
- 样例输入:
-
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
- 样例输出:
-
33333333
11111111111111111111111111111
2222222222222222222222222222222222
#include
#include string.h>
#include
using namespace std;
const int MAX = 1000;
struct BigInteger
{
int digit[MAX];
int size;
void init() {
for (int i = 0;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) {
scanf("%s", str);
E[i].set(str);
}
sort(E, E + n);
for (int i = 0;i) {
E[i].output();
}
}
return 0;
}
1190.大整数排序
标签:tput scan int 结果 out namespace 排序 const integer
原文地址:https://www.cnblogs.com/bernieloveslife/p/9735260.html
评论