import java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.text.*;
public class Main {
public static void main(String[] args){
Scanner cin=new Scanner(new BufferedInputStream(System.in));
PrintWriter cout=new PrintWriter(System.out);
DecimalFormat df=new DecimalFormat("#.0");
BigInteger n, a, b, _0=new BigInteger("0");
BigInteger _1=new BigInteger("1");
BigInteger _10=new BigInteger("10");
BigInteger []ans=new BigInteger[55];
String s, sa, sb;
int sz=0, cas=1, T;
T=cin.nextInt();
while(T>0){
T--;
s=cin.next();
sz=0;
while(!done(s)){
n=new BigInteger(s);
int ls=s.length();
if(ls%2==0){
sa=s.substring(0, ls/2);
sb=s.substring(ls/2, ls);
a=new BigInteger(reverse(sa));
b=new BigInteger(sb);
if(a.compareTo(b)<=0){
sa=sa+reverse(sa);
a=new BigInteger(sa);
ans[sz++]=a;
n=n.subtract(a);
s=n.toString();
}
else{
char []cb=sa.toCharArray();
int pos=find_one(sa);
cb[pos]--;
sa=new String(cb);
sa=sa+reverse(sa);
a=new BigInteger(sa);
ans[sz++]=a;
n=n.subtract(a);
}
}
else{
sa=s.substring(0, ls/2);
sb=s.substring(ls/2+1, ls);
a=new BigInteger(reverse(sa));
b=new BigInteger(sb);
if(a.compareTo(b)<=0){
sa=sa+s.substring(ls/2, ls/2+1)+reverse(sa);
a=new BigInteger(sa);
n=n.subtract(a);
ans[sz++]=a;
}
else{
sa=sa+s.substring(ls/2, ls/2+1);
int pos=find_one(sa);
char []cb=sa.toCharArray();
cb[pos]--;
sa=new String(cb);
sa=sa+reverse(sa.substring(0,sa.length()-1));
a=new BigInteger(sa);
n=n.subtract(a);
ans[sz++]=a;
}
}
s=n.toString();
}
if(s.length()==1){
n=new BigInteger(s);
if(n.compareTo(_0)>0)
ans[sz++]=new BigInteger(s);
}
else{
n=new BigInteger(s);
a=new BigInteger(s.substring(0,1));
if(a.compareTo(_1)>0)
a=_10.subtract(a.subtract(_1));
ans[sz++]=a;
ans[sz++]=n.subtract(a);
}
cout.println("Case #"+(cas++)+":");
cout.println(sz);
for(int i=0;i<sz;i++)
cout.println(ans[i]);
cout.flush();
}
}
public static String reverse(String a){
char[] b=a.toCharArray();
int len=a.length();
for(int i=0;i<len/2;i++){
char t=b[i];
b[i]=b[len-1-i];
b[len-1-i]=t;
}
String c=new String(b);
return c;
}
public static boolean done(String a){
int len=a.length();
char []b=a.toCharArray();
for(int i=1;i<len;i++)
if(b[i]!='0')
return false;
return true;
}
public static int find_one(String a){
char []b=a.toCharArray();
for(int i=a.length()-1;i>=0;i--)
if(b[i]>'0')
return i;
return -1;
}
}
2016中国大学生程序设计竞赛(长春) Ugly Problem
最新推荐文章于 2020-11-10 22:44:00 发布