我们给了两个数字N和K。目标是找到1到N之间具有等于[[,N]]中的K除数的除数。
我们将首先计算范围[1,N]中的K的除数,然后将其存储在变量count中。
现在我们将从i = 1到i = N开始。现在,对于每个数字num = i(使得i!= K),将num的除数计数在范围[1,N]中。并将它们的出现存储在变量除数中。
如果除数=计数,则num在[1,N]范围内具有与K相同的除数。这些数字的增量计数。
让我们通过示例来理解。
输入-N = 5,K = 2
输出-除数等于K-1的<N个数的计数
说明-
Between 1 and 5, 2 has divisors 1,2 only. count=2 1 has only 1 divisor which is 1 3 has divisors 1,3 → 2 4 has divisors 1,2,4 → 3 1 number 3 has 2 divisors like K=2.
输入-N = 15,K = 10
输出-除数等于K-3的<N个数的计数
说明-
Between 1 and 15, 10 has divisors 1,10 only. count=2 Similarly 6, 8, 14 have only 2 divisors.
我们将N和K作为整数。
函数countDivisibles(int n,int k,)以N和K作为参数,并返回除数与K相等的<N之间的数字。
将初始计数设为0。对于除数<k of n。
将初始numcount设为0。对于除数与k相同的数字。
使用for循环,从i = 1到i <n。如果k%i == 0,则增加计数。
现在count的k除数的数量<n
再次使用for循环,从i = 1到i <n。对于每个num = i(使其不等于k),将除数的初始计数作为变量除数,即0。
现在在i = 1和i <n之间找到num%i == 0,如果是,则增加除数。最后,除数将有num个小于n的除数。
检查除数是否等于计数。如果为true,则增量变量numcount会存储除数等于k的<n个数的计数。
在两个循环结束时返回numcount作为结果。
#include <bits/stdc++++.h> using namespace std; int countDivisibles(int n, int k){ int count = 0; int numcount=0; for (int i = 1; i < n;i++ ){ if (k % i == 0) { count++; } } //现在count的除数为k- // cout<<count<<endl; for(int i=1;i<n;i++){ int num; if(i!=k){ num=i; int divisors=0; for(int j=1;j<n;j++){ if(num%j==0) { divisors++; } } //cout<<endl<<num<<" "<<divisors; if(divisors==count) { numcount++; } } } return numcount; } int main(){ int N = 50, K = 6; cout<<endl<<"Numbers < N which have equal divisors as K:"<<countDivisibles(N,K); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Numbers < N which have equal divisors as K:14
Q) 给定阵列A1、A2…an和K计数,有多少子阵列的反转计数大于或等于K.N 所以,我在一次面试中碰到的这个问题。我想出了一个简单的解决方案,用两个for循环(O(n^2)形成所有子数组,并使用O(nlogn)的改进merge sort对数组中的逆序进行计数。这导致了O(n^3logn的复杂性),我想这是可以改善的。有什么我可以改进的方法吗?谢谢!
本文向大家介绍计算要翻转的最小位,以便在C ++中A和B的XOR等于C,包括了计算要翻转的最小位,以便在C ++中A和B的XOR等于C的使用技巧和注意事项,需要的朋友参考一下 给出三个长度为N的二进制序列A,B和C。每个序列代表一个二进制数。我们必须找到没有。对A和B中的位进行所需的翻转,以使A和B的XOR导致C。XOR B变为C。 首先让我们了解XOR运算的真值表- X ÿ X XOR Y 0
本文向大家介绍计算C ++中排序后的旋转数组中小于或等于给定值的元素,包括了计算C ++中排序后的旋转数组中小于或等于给定值的元素的使用技巧和注意事项,需要的朋友参考一下 给我们一个整数数组。该数组是已排序的旋转数组。目的是找到等于或小于给定数K的数组中的元素数。 方法是遍历整个数组并计算小于或等于K的元素。 输入值 输出结果 说明-元素<= 4是1,2,3,4 Count = 4 输入值 输出结
我对这个结果很困惑。 是不同的对象,当处理时,它会比较第一个元素的地址,所以 的行为。 (*)是否等于 ? 是一个对象吗?和都指向这个物体的第一个元素?
本文向大家介绍计算C ++中数组中的素数,包括了计算C ++中数组中的素数的使用技巧和注意事项,需要的朋友参考一下 给我们一个数字数组。目的是找到该数组中素数的计数。 质数是可以被1和数字本身整除的数。它只有两个因素。我们将检查从第一个元素到最后一个元素是否为质数,并增加迄今发现的质数。 要检查数字N是否为质数,请检查[2到N / 2]范围之间的数字是否将N整除。如果是,则它不是质数。否则,它是首
给定一个n个正整数的序列,我们需要计算其和可被k整除的连续子序列。 约束条件:N最多为10^6,每个元素最多为10 ^9,K最多为100 示例:设N=5,K=3,数组为1 2 3 4 1 这里的答案是4 说明:存在4个子序列,其和可被3整除,它们是: 我的尝试是: 但显然它的方法很差。对于这个问题,他们有更好的方法吗?请帮帮忙。 完整问题:https://www.hackerrank.com/co