タイトル1190:大整数ソート
タイトルの説明:
N個の長さが最も長くて1000に達する数を並べ替えます.
入力:
1行目の整数Nを入力します(1<=N<=100).次のN行は行ごとに数があり、数の長さは1<=len<=1000の範囲である.各数は正数であり、接頭辞ゼロが含まれていないことを保証します.
出力:
複数組のテストデータがある可能性があり、各組のデータに対して、与えられたN個の数を小さいから大きいまで並べ替え、並べ替え後の結果を出力し、各数が1行を占める.
サンプル入力:
サンプル出力:
C++コード:
最初はこの考えだったが、問題がどこにあるのか分からなかった.
C++コード(WA、本体デバッグ大丈夫):
N個の長さが最も長くて1000に達する数を並べ替えます.
入力:
1行目の整数Nを入力します(1<=N<=100).次のN行は行ごとに数があり、数の長さは1<=len<=1000の範囲である.各数は正数であり、接頭辞ゼロが含まれていないことを保証します.
出力:
複数組のテストデータがある可能性があり、各組のデータに対して、与えられたN個の数を小さいから大きいまで並べ替え、並べ替え後の結果を出力し、各数が1行を占める.
サンプル入力:
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
サンプル出力:
33333333
11111111111111111111111111111
2222222222222222222222222222222222
C++コード:
#include
#include
#include
#include
using namespace std;
bool cmp(string s1,string s2)
{
if(s1.size()==s2.size())
{
for(int i=0;i>n&&n>=1&&n<=100)
{
vector vec;
string str;
for(int i=0;i>str;
if(str.size()>1000)return 1;
vec.push_back(str);
}
sort(vec.begin(),vec.end(),cmp);
for(vector::iterator j=vec.begin();j!=vec.end();j++)
cout<
最初はこの考えだったが、問題がどこにあるのか分からなかった.
C++コード(WA、本体デバッグ大丈夫):
#include
#include
#include
#include
using namespace std;
struct x{
char str[10001];
unsigned int len;
};
int main()
{
int N;
x T[101];
while(cin>>N)
{
for(int i=0;i>T[i].str;
T[i].len=strlen(T[i].str);
}//for
x temp;
for(int a=0;aT[b+1].len)
{
temp=T[b+1];
T[b+1]=T[b];
T[b]=temp;
}//if
else if(T[b].len==T[b+1].len)
{
int l=T[b].len;
for(int i=0;i(T[b+1].str[i]-'0'))
{
temp=T[b+1];
T[b+1]=T[b];
T[b]=temp;
break;
}//if
}//for
}
}//for b
}//for
for(int m=0;m