假设我们有两个数字 N 和 K。任务是打印 K 个数字,这些数字是 2 的幂,并且它们的和为 N。如果不可能,则返回 -1。假设 N = 9 且 K = 4,则输出将为 4 2 2 1,其和为 9,元素数量为 4,并且每个元素都是 2 的幂。我们需要遵循以下步骤来解决此问题:如果 k 小于 N 中的 set bits 数量或大于 N,则返回... 阅读更多
强制转换表达式提供了一种机制,可以显式提供 lambda 表达式的类型(如果无法从上下文中方便地推断)。它还有助于解决当方法声明与不相关的函数式接口类型重载时出现的歧义。语法Object o = () -> { System.out.println("TutorialsPoint"); }; // 非法:Object o = (Runnable) () -> { System.out.println("TutorialsPoint"); }; // 合法示例interface Algebra1 { int operate(int a, int b); } interface Algebra2 { int operate(int a, int b); } public class LambdaCastingTest { public static void main(String[] args) { printResult((Algebra1)(a, b) -> a + b); // 强制转换表达式... 阅读更多
我们需要找到两个数字的最大公约数,其中一个数字可以大到 (109 ^ 109),这无法存储在某些数据类型(如 long 或其他类型)中。因此,如果数字为 a = 10248585,n = 1000000,b = 12564,则 GCD(a^n, b) 的结果将为 9。由于数字非常大,因此我们无法使用欧几里得算法。我们需要使用具有 O(log n) 复杂度的模幂运算。示例实时演示#include #include using namespace std; long long power(long long a, long long n, long long b) { long long res = ... 阅读更多