题解 | 小红的好数组

小红的好数组

https://www.nowcoder.com/practice/240ac7ee96b84dfdb030c785966d32ca

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case

            int n = in.nextInt();
            int k = in.nextInt();
            // 偶数个数
            int oddNum = k / 2;
            // 奇数个数
            int evenNum = k - oddNum;
            int mod = 1000000007;

            // 四种情况
            long ans = 0;
            ans = 1l * power(oddNum, n / 3, mod) * power(evenNum, n - n / 3, mod) % mod;
            ans = ans + 1l * power(oddNum, (n + 1) / 3, mod) * power(evenNum, n - (n + 1) / 3, mod) % mod;
            ans = ans + 1l * power(oddNum, (n + 2) / 3, mod) * power(evenNum, n - (n + 2) / 3, mod) % mod;
            ans = ans + power(oddNum, n, mod);
            ans %= mod;

            System.out.println(ans);
        }
    }

    // x ^ y
    static long power(long x, long y, int mod) {
        if (y == 0) {
            return 1;
        }
        if ((y & 1) == 1) {
            return 1l * x * power(x, y - 1, mod) % mod;
        }
        return power((1l * x * x) % mod, y >> 1, mod);
    }
}

// 奇数 奇数 偶数 奇数 奇数 偶数  (偶数 = x / 3) 
// 奇数 偶数 奇数 奇数 偶数 奇数 奇数 偶数   偶数 =(x + 1) / 3
// 偶数 奇数 奇数 偶数 奇数 奇数 偶数        偶数 = (x + 2) / 3
// 偶数 偶数 偶数 偶数              

全部评论

相关推荐

求面试求offer啊啊啊啊:要求太多的没必要理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务