C++ Pertanyaan kebarangkalian nombor genap atau ganjil dalam julat tertentu

WBOY
Lepaskan: 2023-09-13 14:21:07
ke hadapan
1281 orang telah melayarinya

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

Cari kebarangkalian pariti nombor dalam julat tertentu, iaitu sama ada nombor genap atau nombor ganjil. Untuk setiap pertanyaan, kita perlu mencetak p dan q, cth.

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

Output : 0
3 4
1 2
Salin selepas log masuk

Dalam masalah ini, kami akan mengekalkan dua tatasusunan yang masing-masing mengandungi jumlah ganjil dan genap sehingga indeks tersebut. Ini memudahkan masalah kami, kini kami perlu mencetak nombor mereka dan bilangan elemen yang terdapat dalam julat.

Kaedah penyelesaian

Dalam kaedah ini, kami mengekalkan dua tatasusunan. Ia mengandungi bilangan nombor genap dan ganjil yang ditemui sehingga indeks ke-i, dan menyelesaikan masalah seperti masalah jumlah awalan.

Contoh

#include <bits/stdc++.h>
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 << "0\n";
        else if (p == q) // if p == q we print 1
            cout << "1\n";
        else {
            int g = __gcd(p, q);
            cout << p / g << " " << q / g << "\n"; // as p and shouldn&#39;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;
}
Salin selepas log masuk

Output

0
3 4
Salin selepas log masuk

Penjelasan kod di atas

#🎜🎜 dalam kaedah Array di atas untuk mengira bilangan nombor genap dan nombor ganjil yang ditemui sehingga indeks ke-i. Sekarang kita perlu mencari bilangan nombor genap atau ganjil dalam julat tertentu dan mencetak nombor itu dan mencetak jumlah bilangan kejadian unsur.

Kesimpulan

Dalam tutorial ini, kami menyelesaikan soalan tentang kebarangkalian nombor genap atau ganjil dalam julat tertentu. Kami juga mempelajari program C++ untuk masalah ini dan kaedah lengkap kami untuk menyelesaikan masalah ini (kaedah biasa). Kita boleh menulis program yang sama dalam bahasa lain seperti C, Java, Python dan lain-lain. Harap anda mendapati tutorial ini membantu.

Atas ialah kandungan terperinci C++ Pertanyaan kebarangkalian nombor genap atau ganjil dalam julat tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan