假设我们有一个整数n,我们必须找到小于或等于n的正整数个数,其中整数个数至少有一个数字出现一次。
因此,如果输入为n = 200,则输出为38
为了解决这个问题,我们将遵循以下步骤-
定义一个数组
对于初始化x:= n,当x为非零时,更新x:= x / 10,执行-
在结尾处插入x mod 10
反转数组
ret:= n
对于初始化w:= 1,d:= 1,当w <a的大小时,更新(w增加1),-
d:= d * min(9,10-w + 1)
ret:= ret − d
定义一个功能go()。这没有任何参数。
对于初始化d:= i <1,当d <a [i]时,更新(将d增加1),执行-
如果((1按位左移a [i])按位AND b)非零,则
除此以外
ret:= ret − x
b:= b XOR(左移a [i] 1位)
返回
b:=(1左移10)-1
对于初始化i:= 0,当i <a的大小时,更新(将i增加1),执行-
(将retret减少1)
调用函数 go()
返回ret
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; int solve(int n) { vector<int> a; for (int x = n; x; x /= 10) a.push_back(x % 10); reverse(a.begin(), a.end()); int ret = n; for (int w = 1, d = 1; w < a.size(); ++w) { d *= min(9, 10 − w + 1); ret −= d; } auto go = [&]() { int b = (1 << 10) − 1; for (int i = 0; i < a.size(); ++i) { for (int d = (i < 1); d < a[i]; ++d) { int x = 0; if ((1 << d) & b) ++x; for (int j = i + 1; j < a.size(); ++j) x *= 10 − j; ret −= x; } if ((1 << a[i]) & b) b ^= (1 << a[i]); else return; } −−ret; }; go(); return ret; } int main(){ cout << solve(200) << endl; return 0; }
200输出结果
38
问题内容: 改写: 在我的项目中,我有图像。每个图像有5个标签,范围为[1,10]。我用Elasticsearch上传了这些标签: 我将这些文件加载到类型为“ img”的索引“ my_project”中的elasticsearch中: 我上传的其他示例文件: 在我的应用程序中,向量要长得多,但是具有固定数量的唯一元素。我喜欢这些文件中的20M。 现在,我想找到给定向量的相似文档。向量具有更多公
本文向大家介绍找出C ++中整数数组中位数的程序,包括了找出C ++中整数数组中位数的程序的使用技巧和注意事项,需要的朋友参考一下 假设我们必须实现一个名为MedianClass的类,其中包含以下方法- add(value) 这会为数据结构添加一个值。 median() 查找数据结构中当前存在的所有数字的中位数。 因此,如果我们加上5、3、8并找到中位数,则输出将为5.0,然后如果我们加上9并找到
我试图学习分布式计算,并遇到了一个寻找大量数字的中位数的问题: 假设我们有一大组数字(假设元素数为 N*K),它们无法放入内存(大小为 N)。我们如何找到这些数据的中位数?假设在内存上执行的操作是独立的,即我们可以考虑有K台机器,每台机器最多可以处理N个元素。 我认为中位数可以用于这个目的。我们可以一次将N个数装入内存。我们在< code>O(logN)时间内找到该集合的中值,并保存它。 然后我们
我试着写一个代码,它接受一个介于1和1_000_000之间的整数,并返回一个比相同数字的整数大的最小整数,如果它不存在,则打印0。 举个例子 输入:156 输出165 输入330 输出0 输入27711 输出71127 我的问题是,下面的代码没有为其他输入返回正确的输出。 例如,在输入4231中,输出应该是4312。 我很难找到为每个输入返回正确输出的最佳算法。 TNX提前 }
本文向大家介绍在C ++中找到一个数字X,其数字之和等于N,包括了在C ++中找到一个数字X,其数字之和等于N的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将找到一个数字,其中一些(包括其数字)等于给定的数字N。 这个想法很简单,我们将检查给定数字的左右100个数字。N≤1000000000且总和不超过100不会被限制。 让我们看看解决问题的步骤。 初始化号码。 编写一个循环100次的
问题内容: 今天才开始学习Java,似乎无法弄清楚。我正在学习Learnjavaonline.org上的教程,该教程教您一些知识,然后要求您编写代码来完成特定的事情,然后检查输出以查看其正确性。问题是,如果它不正确,则不会说出原因,也不会给出正确代码的示例。 它希望我使用所有原语输出一个字符串,说“ H3110 w0r1d 2.0 true” 我想出了这个 } 但它输出 我怎样才能使它不将所有整数