首页 > 其他 > 详细

剑指 Offer 14- II. 剪绳子 II(需要取余) - 7月30日

时间:2020-07-30 13:12:58      阅读:83      评论:0      收藏:0      [点我收藏+]

题目

剑指 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次等取余数即可。
*/

 

拓展学习

快速取余数

剑指 Offer 14- II. 剪绳子 II(需要取余) - 7月30日

原文:https://www.cnblogs.com/BoysCryToo/p/13403000.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!