C.長と数字の合計を考えると...

 

http://codeforces.com/contest/489/problem/C

 

 

足根は大きな大きなに、最高レベルからのものである;すなわち、最下位桁から、それが小さい小として、次の最上位ビットの処理はゼロです。

 

少額以上の結果は何もない、分すぎ、全て合計0で、残りのすべての9がありませ

 

1つの パブリック クラスメイン{
 2      公共 静的 ボイドメイン(文字列[]引数){
 3          スキャナIO = 新しいスキャナ(System.in)。
4          INT LEN = io.nextInt()、和= io.nextInt()。
5          INT [] = maxの新しい INT [LEN + 1 ]。
6          INT []分= 新しい INT [LEN + 1 ]。
7  
8          INT SUM1 =和、SUM2 = 和。
9          のためにint型 ; = iが<LEN; I = 1 SUM1 - =最大[I ++])MAX [I] = Math.min(9、SUM1);
 10          INT I = LEN; I> = 1、。。SUM2 - =分[i--])分[I]は= Math.min(9 、SUM2);
 11  
12である         // minは少なくとも、最上位ビットであります。1 
13は、         IF(MIN == 0 [1])のためのINT I = 2であり、Iは<= LEN; I ++は14              IF(MIN [I]> 0 ){
 15                  分[I] - ;
 16                  分[1] ++ ;
 17                  BREAK ;
 18れる             }
 。19  
20である         // SUM小さすぎる:分を全て0に設定されている
21は         int型 nominの= 1 ;
 22であります         以下のためのint型 ;;私は= LEN <I ++はiは1 =)場合 nomin = 0(分[I]!= 0);
23  
24          // 合計太大:SUM1、SUM2没减完
25          の場合のSystem.out.println( " - 1((nomin == 1 && LEN = 1)|| SUM1 = 0 || SUM2 = 0!!!) -1" );
26          {
 27              のためにint型、iは= LEN <; I = 1 I ++ )System.out.print(MIN [I])。
28              System.out.print(」 " )。
29              のためにint型 ; iがLEN = <I ++は、I = 1をSystem.out.print(MAX [I]))。
30          }
 31      }
 32 }

 

おすすめ

転載: www.cnblogs.com/towerbird/p/11257227.html