#P2319. COMPRESS

COMPRESS

问题描述

减少数字的位数。

一位实验物理学家从他进行的实验中生成了大量数据。这些实验产生的数据具有一个特殊属性,他希望利用这个属性来减少存储结果所需的空间。

数据以数字对的形式生成,其中第一个数字总是小于第二个数字。物理学家存储这些数字的方式类似于人们在书中缩写数字范围的方式。例如,当他们提到书中的第11页到第18页时,有时会将其表示为11-8。

符号定义

定义 示例
一对数字中的第一个数用FF表示。 在"18482-02"中,F=18482F = 18482
一对数字中的第二个数(压缩形式)用CC表示。 在"18482-02"中,C=02C = 02
一对数字中的第二个数(解码形式)用RR表示。 在"18482-02"中,R=18502R = 18502
MSD(x,y)MSD(x,y)指当yy以十进制表示时,yy的前xx位最高有效数字。当x0x \leq 0时,为空字符串。 MSD(3,19283)=192MSD(3,19283) = 192, MSD(0,12)=MSD(0,12) = ''
LSD(x,y)LSD(x,y)指当yy以十进制表示时,yy的后xx位最低有效数字(可能用零填充)。 LSD(2,48290)=90LSD(2, 48290) = 90, LSD(2,3)=03LSD(2,3) = 03

解码"压缩"的第二个数字的规则如下:

规则 示例
数字CC总是以尽可能少的位数书写。 -
如果数字CC大于FF,则RRCC相同。 给定"123-283",则F=123F=123C=283C=283RR为283
如果CC小于或等于FF,则应用以下规则: -
LSD(length(C),R)LSD(length(C), R)始终与CC相同。
如果LSD(length(C),F)LSD(length(C), F)小于CC,则RR等于MSD(length(F)length(C),F)MSD(length(F) - length(C), F),并在CC的数字前加上这个值。 给定:"4137-223",则:F=4137F=4137C=223C=223
LSD(length(C),R)=223LSD(length(C),R) = 223
MSD(43,4137)=4MSD(4 - 3, 4137) = 4
RR为4223
如果LSD(length(C),F)LSD(length(C), F)大于或等于CC,则RR等于在以下值上加上10length(C)10^{length(C)}MSD(length(F)length(C),F)MSD(length(F) - length(C), F),并在CC的数字前加上这个值。 给定:"8543-13",则
F=8543F=8543C=13C=13
LSD(length(C),R)=13LSD(length(C),R) = 13
MSD(42,8543)=85MSD(4 - 2, 8543) = 85
102=10010^{2} = 100
RR8513+100=86138513 + 100 = 8613

请注意,数字CC上的前导零是有意义的。'7'与'07'不同,它们与'007'也不同。例如:

  • 给定:"2839-06",则F=2839F=2839C=06C=06,因此RR为2906
  • 给定:"2839-006",则F=2839F=2839C=006C=006,因此RR为3006

你的任务是根据未压缩的版本计算"压缩"的第二个数字格式。

输入

输入的每一行将由一对用连字符分隔的非负整数组成,其中第二个数字总是大于第一个数字。第二个数字将始终小于23112^{31}-1

输出

输入的每一行将产生一行输出。每行输出将由第一个数字,后跟一个连字符,再后跟第二个数字的"压缩"版本组成。

输入数据1

10-18
83294-84137
100-200

输出数据1

10-8
83294-137
100-00

提示

:问题4指出CC总是以最少的位数书写。给出的例子f=4137f=4137c=223c=223得到r=4223r=4223。但是如果输入是4137-4223,CC的最小位数是23。是否有这样的测试用例?

:确实,4137-223不是范围4137-4223的最小可能表示,但是,给定4137-223,正确的解压缩是4137-4223。

一个生成4137-223的程序将被判定为不正确,因为4137-23是这个范围的最短压缩表示。