Leetcode 1808

大数快速幂modPow(x,d)

import java.math.*;
class Solution {
    public int maxNiceDivisors(int primeFactors) {
        // d
        //9  4*5=20
        //   3 3 3=27
        //   2 2 3 2=24
        //10  3 3 4=36
        //    3 3 3 1=27
        //    3 3 2 2 =36
        //11  3 4 4=48
        //    3 3 3 2=54
        //        0   3的shang
        //prime%3 1    3的shang1  *4
        //        2    3的shang  *2
        if(primeFactors==1) return 1;
        BigInteger maxx=new BigInteger("1000000007");
	        BigInteger x=BigInteger.valueOf(primeFactors);
	        //BigInteger yu=x.mod(new BigInteger("3"));
	        BigInteger shang=x.divide(new BigInteger("3"));
	        BigInteger three=new BigInteger("3");
	        if(primeFactors%3==0) return Integer.parseInt(three.modPow(shang,maxx).toString());
	        if(primeFactors%3==1) 
            return Integer.parseInt(three.modPow(shang.subtract(BigInteger.ONE),maxx).
            multiply(new BigInteger("4")).mod(maxx).toString()); 
	        return Integer.parseInt(three.modPow(shang,maxx).multiply
            (new BigInteger("2")).mod(maxx).toString()); 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值