假设我们有一个整数 n。我们的任务是找到两个数字 a 和 b,满足以下三个条件。a mod b = 0a * b > na / b < n如果没有找到任何对,则输出 -1。例如,如果数字 n = 10,则 a 和 b 可以是 a = 90,b = 10。这满足给定的规则。为了解决这个问题,我们将遵循以下步骤-令 b = n。可以使用以下三个条件找到 a:a mod b = 0 当 a 是 b 的倍数时a / b < n,所以 ... 阅读更多
假设我们有两个数字 N 和 D。我们必须找到一个 N 位数,该数能被 D 整除。如果 N 是 3,D 是 5,则该数可以是 500。这很容易解决。如果 D 是 10 且 N 是 1,则将是不可能的。我们可以使用 D,假设 D 有 m 位数字,然后附加 N – m 个 0 以使其成为 N 位数并能被 D 整除。示例#include using namespace std; string nDigitDivByD(int n, int d) { string ans = ""; if (d ... 阅读更多
这里我们将看到如果给定一个数字,那么如何找到最重要的位值,即设置位。该值是 2 的幂。因此,如果数字是 10,则 MSB 值将是 8。我们必须找到 MSB 的位置,然后找到在第 k 位设置位数字的值。示例#include #include using namespace std; int msbBitValue(int n) { int k = (int)(log2(n)); return (int)(pow(2, k)); } int main() { int n = 150; cout
假设我们有一个数字列表;我们的任务是使用递归查找链表的中间节点。因此,如果列表元素为 [12、14、18、36、96、25、62],则中间元素为 36。为了解决此问题,我们将以递归方式计算列表中的节点总数,并将其取一半。然后通过递归回滚,在每次调用中将 n 减 1,返回 n 为零时的元素。示例#include #include using namespace std; class Node{ public: int data; Node *next; }; Node* getNode(int data){ ... 阅读更多
假设我们有一个矩阵,我们的任务是找到该矩阵中每一行的最大元素并打印它们。这项任务很简单。对于每一行,重置最大值,找到最大元素,并打印它。让我们看看代码以更好地理解。示例#include #define MAX 10 using namespace std; void largestInEachRow(int mat[][MAX], int rows, int cols) { for (int i = 0; i < rows; i++) { int max_row_element = mat[i][0]; for (int j = 1; j < cols; j++) { if (mat[i][j] > max_row_element) max_row_element = mat[i][j]; } cout