题解 | 小红的好数组

小红的好数组

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
// 偶数 偶数 偶数 偶数              

全部评论

相关推荐

05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务