当前位置: 首页 > 编程笔记 >

C ++中的第N个幻数

祁英哲
2023-03-14
本文向大家介绍C ++中的第N个幻数,包括了C ++中的第N个幻数的使用技巧和注意事项,需要的朋友参考一下

如果数字可以被A或B整除,则该数字被称为幻数。我们必须找到第N个幻数。由于答案可能非常大,我们将以10 ^ 9 + 7取模。

因此,如果输入为N = 4,A = 4,B = 3,则输出将为8

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数cnt(),它将使用x,A,B,

  • 返回(x / A)+(x / B)-(A和B的x / lcm)

  • 从主要方法中,执行以下操作-

  • l:= 2,r:= 1 ^ 14,ret:= 0

  • 当l <= r时-

    • ret:=中

    • r:=中间-1

    • l:=中+ 1

    • 中:= l +(r-l)/ 2

    • k:= cnt(mid,A,B)

    • 如果k <N,则-

    • 否则-

    • ret:= ret mod(10 ^ 9 + 7)

    • 返回ret

    让我们看下面的实现以更好地理解-

    示例

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long int lli;
    const lli MOD = 1e9 + 7;
    class Solution {
       public:
       int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
       int lcm(int a, int b) { return (a * b) / gcd(a, b); }
       lli cnt(lli x, lli A, lli B) {
          return (x / A) + (x / B) - (x / lcm(A, B));
       }
       int nthMagicalNumber(int N, int A, int B) {
          lli l = 2;
          lli r = 1e14;
          lli ret = 0;
          while (l <= r) {
             lli mid = l + (r - l) / 2;
             lli k = cnt(mid, A, B);
             if (k < N) {
                l = mid + 1;
             } else {
                ret = mid;
                r = mid - 1;
             }
          }
          ret %= MOD;
          return ret;
       }
    };
    main(){
       Solution ob;
       cout << (ob.nthMagicalNumber(4, 4, 3));
    }

    输入值

    4, 4, 3

    输出结果

    8
     类似资料:
    • 返回数组中的每个第 n 个元素。 使用 Array.filter() 创建一个包含给定数组的每个第 n 个元素的新数组。 const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); everyNth([1, 2, 3, 4, 5, 6], 2); // [ 2, 4, 6 ]

    • 问题内容: 我正在研究一种计算数字的第n 个根的方法。但是,我对负数的第 n 个根有疑问。 大多数人说使用,但这不适用于负数。 我已经试过了: 但是,它不适用于所有数字,因为根可以是十进制。例如return ,但这是无效的输入。这甚至会为根源提供错误的答案。例如return ,但-2没有平方根。 问题答案: 你想做什么?除非您打算完全正确地处理复数,否则您不能取负数的第n个根。 例如,虽然具有的主

    • 问题内容: public class Return { public static void main(String[] args) { int answer = digit(9635, 1); print(“The answer is ” + answer); } 创建一个使用称为 digit 的函数的程序,该函数从整数参数的右边返回第n个数字的值。n的值应该是第二个参数。 例如:return

    • 本文向大家介绍在C ++中查找前N个质数的乘积,包括了在C ++中查找前N个质数的乘积的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数字n。我们必须找到1到n之间的质数的乘积。因此,如果n = 7,则输出将为210,因为2 * 3 * 5 * 7 = 210。 我们将使用Eratosthenes筛分法来查找所有素数。然后计算它们的乘积。 示例 输出结果

    • 问题内容: 我正在尝试使用By.cssSelector来捕获类c3的第n个dom元素,其结构如下: 测试我的CSS选择器时,我变得越来越困惑。此选择器正确选择c2 / c3的第二个实例: 而: 什么都不选。 更糟糕的是,将其转换为硒,我似乎始终没有为所有3个版本找到任何东西。有很多选择这些元素的替代方法(我可能只做XPATH),但是我对nth-of- type的缺乏了解使我发疯。谁能提供关于第二个

    • 问题内容: 我正在尝试使用By.cssSelector来捕获类c3的第n个dom元素,其结构如下: 测试我的CSS选择器时,我变得越来越困惑。此选择器正确选择c2 / c3的第二个实例: 而: 什么都不选。 更糟糕的是,将其翻译成selenium,我似乎始终没有为所有3个版本找到任何东西。有很多选择这些元素的替代方法(我可能只做XPATH),但是我对nth-of- type的缺乏了解使我发疯。谁能