2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > leetcode 878. Nth Magical Number | 878. 第N个神奇的数字(数学问题)

leetcode 878. Nth Magical Number | 878. 第N个神奇的数字(数学问题)

时间:2020-12-21 17:01:38

相关推荐

leetcode 878. Nth Magical Number | 878. 第N个神奇的数字(数学问题)

题目

/problems/nth-magical-number/

题解

看了答案:

草稿:

class Solution {public static final long MOD = 1000_000_007;public int nthMagicalNumber(int n, int a, int b) {long L = lcm(a, b); // 最小公倍数long M = L / a + L / b - 1; // 循环周期long q = n / M; // 循环次数long r = n - M * q; // 余数int i = 0;long cur = (L * q) % MOD;int ai = a > b ? 0 : 1;int bi = 1 - ai;while (i <= r) {if (ai * a < bi * b) {cur = ((L * q) % MOD + ((long) ai * a) % MOD) % MOD;ai++;} else {cur = ((L * q) % MOD + ((long) bi * b) % MOD) % MOD;bi++;}i++;}return (int) cur;}// 最小公倍数static long lcm(int a, int b) {return (a / gcd(a, b)) * b;}// 最大公因数static long gcd(int a, int b) {if (a == 0) return b;return gcd(b % a, a);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。