最强DE 战斗力(第五届河南省程序设计大赛)

最强DE 战斗力(第五届河南省程序设计大赛)
http://acm.nyist.net/JudgeOnline/problem.php?pid=541
这是省赛的第二题。
题意:把一个整数拆分成若干份,每一份相加的和为这个数,求这些数最大的积。
如果能够分析出应把原数拆为3+3+3+3+3……,接下来需要的就是大数运算了(悲剧的是我们当时没有分析出来):)。java中有BigInteger类来处理里大整数,比用C语言模拟大数运算方便的多。
这是我的第一道java大数题,感觉写的还有待改进,用的不熟练。

import java.util.*;
import java.math.
*;
public class Main
{
    
public static void main(String[] args)
    
{
        
int N;
        
int Ti;
        Scanner s 
= new Scanner(System.in);
        N 
= s.nextInt();
        
while(N != 0)
        
{
            N
--;
            BigInteger big 
= new BigInteger("0");
            BigInteger 
base = new BigInteger("3");
            BigInteger bt4 
= new BigInteger("4");
            BigInteger bt2 
= new BigInteger("2");
            Ti 
= s.nextInt();
            
if(Ti % 3 == 0)
            
{
                big 
= base.pow(Ti / 3);
                System.
out.println(big);
            }

            
else if(Ti % 3 == 1)
            
{
                big 
= base.pow(Ti / 3 - 1);
                big 
= big.multiply(bt4);
                System.
out.println(big);
            }

            
else
            
{
                big 
= base.pow(Ti / 3);
                big 
= big.multiply(bt2);
                System.
out.println(big);
            }

        }

    }

}

你可能感兴趣的:(最强DE 战斗力(第五届河南省程序设计大赛))