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("\n");*/
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("\n");
69     }
70     return 0;
71 }
时间: 2024-10-19 09:24:00

NYOJ 1233 差值的相关文章

NYOJ 1233 差值(字符串排序+大数减法)

题意T组测试数据,每组数据给你n(0<n<=1000)个无符号整型范围内的数,把这些数字任意排列后连接成一个大数,求能排出的所有数当中最大的与最小的两个数的差值.例如{1, 2}, 最大为21,最小为12,差值为9. 样例输入131 2 3 样例输出198 思路乍一看是个大数问题,然而后来发现排序才是这道题的重点. 一开始想的是按数字的大小排序,但显然不对.例如{9, 10},按数字排序的话9 < 10,则最小值为910,但是显然109更小. 后来想到按字典序排,并且深信不疑的WA了两次

阿里 2014-08-29 校招机试题 求一个存放整数的二叉树相差最大的两节点差值绝对值

题目:写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这颗二叉树中相差最大的两个节点间的差值绝对值.请注意程序效率. 如果是数值之差,感觉怎么着也得遍历一遍,直接修改下二叉树的基本遍历代码就可以. #include<stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node * left; struct Node * right; } BitNode, *BiTree; /* 求

查找(哨兵查找、二分查找、差值查找)

#include <iostream> using namespace std; #define N 10 int fib(int n) { if(n == 0) { return 0; } else if(n == 1) { return 1; } else { return (fib(n-1) + fib(n-2)); } } //普通查找: int sequenctial_Search(int *a,int n,int key) { int i; a[0] = key; i = n; w

Houdini中给火花渲染准确的运动模糊 - 给运动模糊做非线性差值的方法以及固定粒子点数的方法

估计大家都知道使用运动速度来进行运动模糊的渲染,但是往往这个方法得到的运动模糊都是线性变化的,虽然乍一看没什么问题,但是如果想要每一帧的模糊轨迹也是有曲线变化的而不是僵硬的直来直去的话,使用trail算个速度来做的运动模糊是永远做不到这一点的. 这里我想通过常用的火花(spark)的运动模糊来讲一讲我所了解的一些比较好的方法. 所谓渲染中的运动模糊无非就是差值算法.目前使用的比较多的主要有两种.第一种就是上面说到的直接使用速度来线性差值,这种方法会计算每一个点的速度方向,计算出前一帧或者后一帧的

华为机试—差值排序

对整形数组按照和指定整数的差值大小进行排序,按照差值升序排列返回. 要求实现方法: public staticint[] calcTimes(int[] num, int value); [输入] num:整型数组: value 指定的整数 [返回] 按照升序返回整型数组,排序按照各个整数和指定整数的差值大小 [注意]只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:num = {1,2,3,4,5,10,17,18,19}  value = 5 返回:{5,4,3,2,1,

二分查找的改进--差值查找

差值查找 在二分查找中,我们每次比较都可以排除一半的数据量,这个已经是很高效了.如果利用关键字本身的信息,每次排除的数据量充分依赖于关键字的大小,则查找会更高效,这就是差值查找的思想. 下面通过示例代码,比较二分查找和差值查找的不同,在不同中领略差值查找的改良之处. #include <stdio.h> #include <stdlib.h> int InterSearch(int *array, int n, int key) { if (array && n &

hdu1598find the most comfortable road(并查集+枚举,求起点到终点的边中最大边减最小边差值最小)

Problem Description XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的"舒适度"有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提速/降速,痛苦呀 ), 但XX星人对时间却没那么多要求.要你找出一条城市间的最舒适的路径.(

差值的再议-Hermite差值

1. 插值法 插值法又称"内插法",是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法. 如果这特定函数是多项式,就称它为插值多项式. 2. 经典的Hermite差值 Hermite插值是利用未知函数f(x)在插值节点上的函数值及导数值来构造插值多项式的.因此,Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值. 对于高阶导数的情况,Hermite插值多

基于Qt的OpenGL可编程管线学习(17)- 差值、反差值、排除

1.差值 shader //差值 uniform sampler2D U_MainTexture; uniform sampler2D U_SubTexture; varying vec2 M_coord; void main() {         vec4 blendColor = texture2D(U_SubTexture, M_coord);         vec4 baseColor = texture2D(U_MainTexture, M_coord);         gl_F