C++ 查询给定范围内偶数或奇数的概率

c++ 查询给定范围内偶数或奇数的概率

求给定范围内数字奇偶性的概率,即是偶数还是奇数。对于每个查询,我们需要打印 p 和 q,例如用 p / q 表示概率。

Input : N = 5, arr[] = { 6, 5, 2, 1, 7 }query 1: 0 2 2query 2: 1 2 5query 3: 0 1 4Output : 03 41 2

在这个问题中,我们将维护两个数组,分别包含奇数和偶数的数量,直到该索引。这简化了我们的问题,现在我们需要打印它们的数量以及该范围内存在的元素的数量。

解决方案的方法

在这个方法中,我们维护两个数组。它们包含直到第i个索引找到的偶数和奇数的数量,并且像前缀和问题一样解决这个问题。

示例

#include using namespace std;void solve(int arr[], int n, int Q,int query[][3]){    int even[n + 1]; // our array for counting the number of evens find till ith index    int odd[n + 1]; // our array for counting the number of odds find till ith index    even[0] = 0; odd[0] = 0; // as we are doing 1 based indexing so we just set 0th index of both arrays to 0    for (int i = 0; i < n; i++) {        if (arr[i] & 1) { // if we found odd number we increment odd            odd[i + 1] = odd[i] + 1;            even[i + 1] = even[i];        }        else { // else we increment even            even[i + 1] = even[i] + 1;            odd[i + 1] = odd[i];        }    }    for (int i = 0; i < Q; i++) { // traversing the queries        int r = query[i][2]; // right range        int l = query[i][1]; // left range        int k = query[i][0]; // type of query        int q = r - l + 1; // number of elements in the given range        int p;        if (k) // k is the type of query and we are finding the            //number of elements with same parity in the given range            p = odd[r] - odd[l - 1];        else            p = even[r] - even[l - 1];        if (!p) // if p is zero we simply print 0            cout << "0n";        else if (p == q) // if p == q we print 1            cout << "1n";        else {            int g = __gcd(p, q);            cout << p / g << " " << q / g << "n"; // as p and shouldn't have a common gcd so we divide the gcd        }    }}int main(){    int arr[] = { 6, 5, 2, 1, 7 }; // given array    int n = sizeof(arr) / sizeof(int); // size of our array    int Q = 2; // number of our queries    int query[Q][3] = {{ 0, 2, 2 },{ 1, 2, 5 }}; // given queries    solve(arr, n, Q, query);    return 0;}

输出

03 4

以上代码的解释

在上述方法中,我们通过维护两个数组来计算找到的到第i个索引的偶数和奇数的数量。现在我们需要找到给定范围内的偶数或奇数的数量,并打印该数量,并打印出现的元素的总数。

立即学习“C++免费学习笔记(深入)”;

结论

在本教程中,我们解决了关于给定范围内偶数或奇数的概率的问题。我们还学习了此问题的C++程序和我们解决此问题的完整方法(正常方法)。我们可以用其他语言(如C、Java、Python和其他语言)编写相同的程序。希望您觉得本教程有帮助。

以上就是C++ 查询给定范围内偶数或奇数的概率的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:11:21
下一篇 2025年12月15日 03:39:21

相关推荐

  • 具有相同数量小写字母和大写字母的子字符串数量

    在这个问题中,我们需要计算给定字符串中包含相同数量的小写和大写字符的字符串的总数。解决这个问题的朴素方法是找到所有的子字符串,并计算具有相同数量的小写和大写字符的子字符串的总数。 有效的方法是使用子数组求和问题。我们可以将小写字符视为-1,将大写字符视为+1,我们将学习这两种方法来解决问题。 问题陈…

    好文分享 2025年12月17日
    000
  • 在C程序中,将以下内容翻译为中文:查找链表倒数第n个节点的程序

    给定 n 个节点,任务是打印链表末尾的第 n 个节点。程序不得更改列表中节点的顺序,而应仅打印链表最后一个节点中的第 n 个节点。 示例 Input -: 10 20 30 40 50 60 N=3Output -: 40 在上面的例子中,从第一个节点开始,遍历到 count-n 个节点,即 10,…

    2025年12月17日
    000
  • 给定一个数,其与原始数之和等于另一个给定的数的排列方式

    在本文中,我们将深入探讨一个涉及数字和排列的迷人问题:“一个数与原始数的和等于另一个给定数的排列”。这个问题将数论和组合数学独特地结合在一起,使它成为一个引人入胜的挑战。 为了澄清,给定一个原始数和一个目标数,我们需要找到原始数的一个排列,使得当我们将原始数和它的排列相加时,得到目标数。 理解问题 …

    2025年12月17日
    000
  • 在C语言中的弧函数

    函数在C语言中是在graphics.h库中定义的。 在C编程语言中,有一个选项可以使用给定的半径、中心坐标和弧度来创建一个圆弧。 arc()函数在C的graphics.h库中定义 function 用于创建一个弧。这个弧函数包含在C语言的graphics.h库中,该库包含可以在输出屏幕上绘制图形的方…

    2025年12月17日
    000
  • 在C++中,将二叉树中的最大二叉搜索树(Largest BST in a Binary Tree)进行翻译

    在二叉树中,每个子节点只有两个节点(左和右)。树结构只是数据的表示。二叉搜索树(BST)是满足这些条件的特殊类型的二叉树 – 与其父节点相比,左子节点较小 右子节点的父节点比子节点大 假设给定一棵二叉树,我们有应该找出其中最大的二叉搜索树 (BST)。 立即学习“C++免费学习笔记(深入…

    2025年12月17日
    000
  • 使用UDP进行文件传输的C程序

    数据可以在两台使用 C 语言实现 Socket 编程的计算机之间传输。 在同样的情况下,可以轻松地通过实现用户数据报协议 (UDP) 和简单的客户端/服务器。 安全性 – 通过加密处理。 协议 – UDP 加密 – 异或加密 算法 服务器启动并等待文件名。 客户端…

    2025年12月17日 好文分享
    000
  • 将C程序转换为机器码的四个步骤是什么?

    创建和运行程序的过程 程序包含一组用编程语言编写的指令。 程序员的工作是编写和测试程序。 将’C’程序转换为机器语言的4个步骤是: 编写和编辑程序编译程序链接程序执行程序 编写和编辑程序 使用文本编辑器编写程序。 借助文本编辑器,用户可以输入、更改和存储字符数据。 所有特殊的…

    2025年12月17日
    000
  • 在一个范围内评估给定方程的查询

    对区间 [L, R] 内的所有方程进行评估,为我们提供了这些变量的一系列值。如何使用它的示例包括建模、数据分析和解决问题的场景。 在这种情况下,我们为范围内的所有点定义方程变量值。因此,可以通过指定范围的步长并评估范围内每个变量值的方程来完成。 规格 这可以称为向数据库询问信息的请求。当满足某些要求…

    2025年12月17日
    000
  • C/C++中的函数原型的目的是什么?

    在这里我们将了解在 C 或 C++ 中使用函数原型的目的是什么。函数原型用于告诉编译器参数的数量以及函数参数所需的数据类型,它还告诉编译器函数的返回类型。根据此信息,编译器在调用函数之前会交叉检查函数签名。如果没有提到函数原型,那么程序编译时可能会出现一些警告,有时会生成一些奇怪的输出。 如果某个函…

    2025年12月17日
    000
  • 在C语言中,局部作用域是指在特定代码块内部定义的变量、函数或其他实体的可见范围。局部作用域的实体只能在其所在的代码块内部访问和使用,超出该范围将无法访问

    结构是不同数据类型变量的集合,以单个名称分组在一起。 结构声明的一般形式 结构声明如下如下 – struct tagname{ datatype member1; datatype member2; datatype member n;}; 这里,struct 是关键字。 立即学习“C语…

    2025年12月17日
    000
  • C++程序:在数组中找到最大的可整除子集

    本教程将讨论一个问题,其中给定一个不同的正整数数组。我们需要找到最大的子集,使得每对较大的元素除以较小的元素,例如 – Input: nums[ ] = { 1, 4, 2, 6, 7}Output: 1 2 4Explanation:All Divisible subsets are:…

    2025年12月17日
    000
  • C++程序:对数组元素进行升序排序

    为了有效地解决一些问题,将数据项排列在正确的位置非常重要顺序。最流行的排列问题之一是元素排序问题。这本文将演示如何在 C++ 中按升序排列数组成员(根据值不断上升)。 要按特定顺序排列数字或非数字元素,有多种方法排序算法可用于该领域。只需两种简单的排序技术即可将在本文中介绍。选择排序和冒泡排序。让我…

    2025年12月17日
    000
  • 在C++中,将以下内容翻译成中文:Return语句与Main()中的Exit()函数的区别

    If you are a programmer, you write the code; If you write the code, you use the function; if you use the function, you use return and exit statements …

    2025年12月17日
    000
  • 为什么我们认为C/C++中的strncpy是不安全的?

    函数strncpy()用于将指定数量的字符从源复制到目标。 以下是strncpy()的语法 char *strncpy( char *destination, char *source, size_t n); 在这里,destination是指向目标数组的指针,源字符串将被复制到该数组中,sourc…

    2025年12月17日
    000
  • C语言编写的汉诺塔程序

    汉诺塔是一个数学难题。它由三根杆和若干个不同大小的圆盘组成,这些圆盘可以滑动到任意一根杆上。难题以圆盘按大小升序整齐堆叠在一根杆上开始,最小的圆盘在顶部。我们必须将相同的堆叠移到第三根杆上。 难题的目标是将整个堆叠移动到另一根杆上,遵守以下简单规则− 一次只能移动一个圆盘。 每次移动包括从一根堆中取…

    2025年12月17日
    000
  • C vs BASH Fork bomb? C对BASH的Fork炸弹?

    Fork() 炸弹是针对基于 Linux 的系统的 Dos(拒绝服务)攻击。这会无限次调用 Fork() 系统,从而填满程序的内存并意图危害系统。 fork 炸弹的 Bash 脚本 :(){ :|: & };: 代码解释为:( ) 是函数定义,{ } 定义循环体。 :|:& 创建一个…

    2025年12月17日
    000
  • 在C语言中,fork()和exec()之间的区别是什么?

    在这里,我们将看到在C语言中fork()和exec()系统调用的效果。fork用于通过复制调用进程来创建一个新的进程。新进程是子进程。请参考以下属性。 子进程有自己独特的进程ID。子进程的父进程ID与调用进程的进程ID相同。子进程不继承父进程的内存锁和信号量。 fork()返回子进程的PID。如果值…

    2025年12月17日
    000
  • 重新排列一个数组,使得 arr = i,使用 C++

    我们有一个正整数类型的数组,假设为arr[],其大小可以任意给定,数组中的元素应该大于0但小于数组的大小。任务是将数组重新排列,使得如果arr[i]等于’i’,则’i’在数组中存在,否则将arr[i]元素设为-1,并打印最终结果。 让我们看一下这个问题…

    2025年12月17日
    000
  • C++程序打印X星型图案

    展示不同形状的星星图案,如金字塔、正方形和菱形,是一种 基本编程和逻辑开发的常见部分。我们面临各种问题当我们研究编程中的循环语句时,涉及到星星和数字模式。本文将演示如何使用星号打印 X 或十字。 我们将看到相同的两种方法。第一个有点复杂,但下一个方法效率很高。 星形图案(使用两组空格) * * * …

    2025年12月17日
    000
  • 将以下内容翻译为中文:C++程序将字符串转换为浮点数

    C++ 中使用静态类型。为了编写程序,变量必须定义为特定类型。有时必须读取来自控制台或文件的输入。在这种情况下,程序被赋予字符串数据。需要特殊操作才能将它们转换为其他数据类型。本文将提供将字符串转换为浮点整数的 C++ 方法。可以使用几种不同的方法来实现此目的。分别探索它们中的每一个。 在 C++ …

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信