2016中国大学生程序设计竞赛(长春) Ugly Problem
来源:互联网 发布:怎么开通淘宝花呗支付 编辑:程序博客网 时间:2024/05/21 12:46
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; }}
0 0
- 2016中国大学生程序设计竞赛(长春) Ugly Problem
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
- HDU Ugly Problem 2016中国大学生程序设计竞赛(长春)-重现赛
- 2016中国大学生程序设计竞赛(长春)1002 Fraction 数学
- HDU Fraction 2016中国大学生程序设计竞赛(长春)-重现赛
- HDU Triangle 2016中国大学生程序设计竞赛(长春)-重现赛
- 2016中国大学生程序设计竞赛(长春)-重现赛
- hdu 5912 Fraction 2016中国大学生程序设计竞赛(长春) 水题
- hdu 5912 Fraction -2016中国大学生程序设计竞赛(长春)
- 2016中国大学生程序设计竞赛CCPC-长春赛区
- HDU 5912 Fraction 【模拟】 (2016中国大学生程序设计竞赛(长春))
- HDU 5914 Triangle 【构造】 (2016中国大学生程序设计竞赛(长春))
- 2016中国大学生程序设计竞赛(ccpc 长春)题解报告
- 2016中国大学生程序设计竞赛(ccpc 长春) Fraction【模拟】
- hdu 5914 Triangle 2016中国大学生程序设计竞赛(长春)(脑洞题)
- HDU 5918 Sequence I【暴力+剪枝】(2016中国大学生程序设计竞赛(长春)H题)
- HDU Harmonic Value Description 2016中国大学生程序设计竞赛(长春)-重现赛
- HDU Sequence I 2016中国大学生程序设计竞赛(长春)-重现赛
- SSRF详解
- HDU - 1128 Self Numbers
- 动态、静态语言,强、弱类型语言
- Struts2 in action 笔记1
- codeforces 366C
- 2016中国大学生程序设计竞赛(长春) Ugly Problem
- JavaScript学习笔记(1)
- 软件工程专业
- sql中drop、truncate和delete的区别
- Git Windows Redmine服务端配置
- [写给女生的C语言][01]Hello World!
- Linux 下 Shell 命令的分类及用法
- Linear Algebra - Lesson 3. 乘法和逆矩阵
- Leetcode-46. Permutations