• 高精度排序模板题 P1110


    Description

    给出N(<=1000)个不超过1000位的整数,然后将他们由小到大输出!


    Input

    第 1 行,一个整数N,接下来的N行,每行一个高精度数。  


    Output

    共 N 行,每行一个高精度数,并由小到大输出。


    Hint

    N<=1000


    Solution

    板子,简单到我不能逼逼的那种板子。。

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #define maxn 1005
    using namespace std;
    int a[maxn][maxn];
    int n,cnt;
    char ttmp[maxn],tmp[maxn];
    struct data{
    	int a[maxn];
    	friend bool operator < (data x,data y){
    		if(x.a[0]>y.a[0])return false;
    	    if(x.a[0]<y.a[0])return true;
    		for(int i=x.a[0];i>=1;i--){
    			if(x.a[i]<y.a[i])return true;
    			if(x.a[i]>y.a[i])return false;
    		}
    	}
    }aa[maxn];
    void init(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		scanf("%s",ttmp);
    		aa[i].a[0]=strlen(ttmp);
    		for(int k=0;k<aa[i].a[0];k++){
    			if(ttmp[k]!='0'){
    				cnt=k;
    				break;
    			}
    		}
    		for(int q=cnt,j=0;q<=aa[i].a[0];q++,j++){
    			tmp[j]=ttmp[q];
    		}
    		aa[i].a[0]=strlen(tmp);
    		for(int u=1,j=aa[i].a[0]-1;u<=aa[i].a[0];u++,j--){
    			aa[i].a[u]=tmp[j]-'0';
    		}
    		if(aa[i].a[0]==0)aa[i].a[0]=1;
    	}
    }
    int main(){
    	init();
    	sort(aa+1,aa+1+n);
    	for(int i=1;i<=n;i++){
    		for(int j=aa[i].a[0];j>=1;j--){
    			printf("%d",aa[i].a[j]);
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    Linux 环境变量 设置 etc profile
    Linux 升级glibc-2.14 失败 我遇到的问题
    qt窗口的切换
    qt事件机制---事件范例
    qt中的事件机制
    qt的信号与槽函数
    linux下qt的安装
    qt中的udp编程
    qt中的tcp编程
    qt中的多线程
  • 原文地址:https://www.cnblogs.com/virtual-north-Illya/p/10045120.html
Copyright © 2020-2023  润新知