zoukankan      html  css  js  c++  java
  • NYOJ 1233 差值

    差值

     
    描述 
    输入一个整数数组,将它们连接起来排成一个数,找出能排出的所有数字中最大,最小的两个,输出两个数的差值。例如输入数组{1,  2},则输出9。
    输入
    第一行输入一个整数T,表示有T组测试数据。每组测试数据的第一行输入一个整数n(0<n<=1000),第二行输入n个整数ai(0<=ai<2^32)。
    输出
    输出最大数最小数的差值,每个输出各占一行。
    样例输入
    1
    3
    1 2 3
    样例输出
    198
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 struct str
     7 {
     8     char s[20];
     9 }sub[1005];
    10 
    11 bool cmp(str a,str b)
    12 {
    13     int i;
    14     int len1=strlen(a.s);
    15     int len2=strlen(b.s);
    16     int x=max(len1,len2);
    17     for(i=0;i<x;i++)
    18     {
    19         if(a.s[i%len1]<b.s[i%len2])
    20             return 1;
    21         else if(a.s[i%len1]>b.s[i%len2])
    22             return 0;
    23     }
    24     return 1;
    25 }
    26 
    27 int main()
    28 {
    29     int t,len,i,j,n;
    30     char s[20050];
    31     int a1[20050],a2[20050];
    32     scanf("%d",&t);
    33     while(t--)
    34     {
    35         scanf("%d",&n);
    36         for(i=0;i<n;i++)
    37             scanf("%s",sub[i].s);
    38         sort(sub,sub+n,cmp);
    39         /*for(i=0;i<n;i++)
    40             printf("%s ",sub[i].s);
    41         printf("
    ");*/
    42         memset(s,0,sizeof(s));
    43         for(i=0;i<n;i++)
    44             strcat(s,sub[i].s);
    45         len=strlen(s);
    46         for(j=0,i=0;i<len;i++)
    47             a1[j++]=s[i]-'0';
    48         memset(s,0,sizeof(s));
    49         for(i=n-1;i>=0;i--)
    50             strcat(s,sub[i].s);
    51         for(j=0,i=0;i<len;i++)
    52             a2[j++]=s[i]-'0';
    53         for(i=len-1;i>=0;i--)
    54         {
    55             a2[i]=a2[i]-a1[i];
    56             if(a2[i]<0)
    57             {
    58                 a2[i]+=10;
    59                 a2[i-1]-=1;
    60             }
    61         }
    62         for(i=0;i<len;i++)
    63             if(a2[i])break;
    64             if(i==len)
    65                 printf("0");
    66         for(;i<len;i++)
    67             printf("%d",a2[i]);
    68         printf("
    ");
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    数据结构实验之栈四:括号匹配
    数据结构实验之栈三:后缀式求值
    8月7日学习
    8月6日学习
    8月5日学习
    8月4日学习
    周总结
    8月3日学习
    8月2日学习
    8月1日学习
  • 原文地址:https://www.cnblogs.com/homura/p/4792635.html
Copyright © 2011-2022 走看看