题解 | #剪绳子(进阶版)#

剪绳子(进阶版)

http://www.nowcoder.com/practice/106f666170554379ab1974e5a601e741

using namespace std;
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param number long长整型 
     * @return long长整型
     */
    long long cutRope(long long number) {
        // write code here
        if(number < 4){
            return number-1;
        }
        
        long long n;
        long long res = 1;
        long long x = 3;
        
        if(number % 3 == 1){
            n = number / 3 - 1;
        }else{
            n = number / 3 ;
        }
        
        while(n > 0){
            if(n & 1){res = res * x % 998244353;}
            n >>= 1;
            x = x * x % 998244353;
        }
        
        if(number % 3 == 1){
            return 4 * res % 998244353;
        }else if(number % 3 == 2){
            return 2 * res % 998244353;
        }else{
            return res;
        }
        
    }
};
全部评论

相关推荐

02-05 08:18
四川大学 Java
在思考的熊熊很讨厌吃香菜:不是,我门头沟学院呢?这都没排上?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务