题目
剑指 Offer 14- II. 剪绳子 II
我的思路
循环取余or快速取余(二分思想)
我的实现
class Solution { public: long p(int num){ if(num==0) return 1; return (3*p(num-1))%1000000007; } int cuttingRope(int n) { if(n==2) return 1; if(n==3) return 2; else{ int m = n % 3; int y = n / 3; if(m==0) return p(y); if(m==1) return (p(y-1)*4)%1000000007; return (p(y)*2)%1000000007; } } }; /* 相比普通的整数拆分,需要考虑在乘积过大前取余数。 两种取余数的方法:1.循环取余数2.快速取余数 1.第一种方法就是每累乘一次就取余数,n次幂总共需要取n次余数 2.第二种方法有二分的思想,n次幂总共需要取logn次余数,为3的1次,2次,4次,8次等取余数即可。 */
拓展学习
快速取余数