Дархостҳои массив барои ивазкунии зарб ва маҳсулот  


Сатҳи душворӣ мушкил
Аксар вақт пурсида мешавад Cadence Ҳиндустон DE Шо Expedia Google
тартиботи ҳарбӣ Масъалаи пурсиш

Масъалаи "Дархостҳои массив барои афзоиш, иваз ва маҳсулот" гуфта мешавад, ки ба шумо ан асал of ҳамаҷониба ва се намуди дархостҳо мавҷуданд, ки дар онҳо шумо бояд намудҳои зерини саволҳоро ҳал кунед:

Навъи 1: Се арзишҳои чап, рост ва рақами X. мавҷуданд. Дар ин навъи дархост, шумо бояд ҳар як унсури массивро ба арзиши X дар диапазон (чап, рост) фаровон зарб кунед.

Намуди 2: Он аз се қимати чап, рост ҳамчун диапазон иборат аст. Шумо бояд унсурҳои диапазони додашударо бо рақамҳои Y, 2Y, 3Y ва ғайра иваз кунед.

Намуди 3: Ду арзиши чап ва рост ҳамчун диапазон мавҷуданд. Шумо бояд ҳосили ҳамаи элементҳоро дар доираи додашуда пайдо кунед. Азбаски ин рақам метавонад зиёд бошад. Шумо бояд миқдори умумии сифрҳоро дар ҳама саволҳои Type3 ҳисоб кунед.

мисол  

arr[] = {1, 2, 3, 4, 5}
Query: { (3,2,5), (3,4,5), (2,1,3,1), (1,4,5,10), (3,2,4)}
3

Шарҳ

Type3 (2, 5), пас аз ҳосили ҳамаи элементҳо дар доираи 2 ва 5 ⇒ 2 * 3 * 4 * 5 = 120

Type3 (3, 5), пас аз ҳосили ҳамаи элементҳо дар доираи 3 ва 5 ⇒ 3 * 4 * 5 = 60

Type2 (1, 3, 1), пас аз иваз кардани ҳар як элемент ҳамчун y, 2y ва 3y ва амсоли инҳо дар ҳудуди 1 то 3

Type1 (4, 5, 10), ҳар як унсурро бо 10 дар ҳудуди 4 то 5 зарб кунед

ҳамчунин нигаред
Максимум маҳсулот

Type3 (2, 4), пас аз ҳосили ҳамаи элементҳо дар доираи 3 ва 5 2 3 * 40 * 240 = XNUMX

Натиҷаи ⇒ 3, Ҳамин тариқ, дар маҷмӯъ 3 сифрҳои қафо мавҷуданд, ки мо дар дархостҳои навъи 3 пайдо кардем, бинобарин он чоп мешавад.

Array дархостҳо барои афзоиш, иваз ва маҳсулотпайвандак

 

Алгоритм  

  1. Ду массивро тавре эълон кунед, ки ҳарду массив шумораи нулҳои қафоро нисбат ба рақамҳои 2 ва 5 нигоҳ доранд.
  2. Агар мо ба навъи 1 занг занем, пас сифрҳои қафои X-ро дар робита ба 2 ва 5 гиред.
  3. Аз массив дар доираи диапазони муайян гузаред. Ҳар як ададро бо арзиши X зарб кунед. Ҳамзамон, арзиши сифрҳоро ҳамчун зарбҳои 2 ва 5 дар массиви барои мо сохташуда нигоҳ доред сифрҳоInTwo ва zeroesInFive.
  4. Агар мо ба навъи 2 занг занем, пас сифрҳои қафои Y-ро аз рӯи 2 ва 5 гиред.
  5. Y-ро дар ҷои аввали диапазон, 2Y дар сония ва ғ. Нигоҳ доред. Ҳамзамон шумораи сифрҳои қафоро ба zeroesInTwo ва zeroesInFive нигоҳ доред.
  6. Ва барои type3, ҷамъи ҳамаи арзишҳоеро, ки дар як қатор дар zeroesInTwo ва zeroesInFive мебошанд, гиред ва ҳадди ақали ҳисоб кардани сифрҳоро дар ду ё ҳисоб кардани сифрҳоро дар панҷ пайдо кунед.
  7. Арзишро дар ҳаҷми чоп кунед.

Шарҳ  

Барои ҳалли мо як массиви бутун ва се намуди дархостҳо дода мешавад. Яке аз саволҳо мегӯяд, ки шумо бояд ягон рақамро дар доираи зарб зарб кунед. Дигарӣ мегӯяд, ки шумо бояд баъзе рақамҳоро иваз кунед. Дар охирон гуфта мешавад, ки шумо бояд ҳосили рақамҳоро дар диапазон ёбед. Пас барои иҷрои ҳар як дархост, мо алоҳида се вазифа сохтем, ки мутаносибан қисми ҳар як дархостро иҷро мекунанд. Он гоҳ мо сифрҳои қафоро пайдо хоҳем кард. Барои он, ки мо ду массив сохтаем, ки яке ба маънои 2 аст, ва дигаре ба маънои 5.

ҳамчунин нигаред
Дарахтони беназири ҷустуҷӯи дуӣ

Барои ҳалли навъи якуми дархост, ба мо адади X ва диапазон аз рӯи нуқтаи оғоз ва нуқтаи хотимавӣ дода мешавад. Барои фаҳмидани сифрҳои ақиб, ки метавонанд ба амал оянд. Мо мефаҳмем, ки оё шумораи додашуда он сифрҳои пасро дорад ё не. Пас ҳисоб кардани ин сифрҳои ақибмондаро гиред. Ҳамин чиз аст, ки бо сифрҳо дар робита бо панҷ. Мо массивро аз нуқтаи ибтидои диапазон то нуқтаи интиҳои диапазон мегузарем. Он гоҳ мо арзиши X-ро бо ҳар як рақам ҳангоми гардиш зарб хоҳем кард. Мо инчунин ҳамзамон иловаҳоро дар массиви барои нигоҳ доштани сифрҳо иҷро мекунем. Худи ҳамин чиз бояд дар дархости навъи 2 кор карда шавад, мо бояд танҳо ҳар як унсурро бо рақами додашуда, дар шакли силсила иваз кунем.

Барои ҳалли дархости навъи се, мо арзиши sumOfTwos ва sumOfFives ба 0. Мо қиматро дар тағирёбандае, ки мо sumOfTwos ва sumOfFives сохтаем, нигоҳ медорем. Он гоҳ мо ҳадди аққали sumOfTwos ва sumOfFives -ро меомӯзем. Ин ҷавоби зарурӣ ва ниҳоии мо хоҳад буд бармегардем.

рамз  

Амалисозӣ дар C ++ барои пурсишҳои массив барои зарб, иваз ва маҳсулот

#include<vector>
#include<iostream>

using namespace std;

vector<int> zeroesInTwo(1000,0);

vector<int> zeroesInFive(1000,0);

int sum = 0;

int getTwosZeroes(int val)
{
    int count = 0;
    while (val % 2 == 0 && val != 0)
    {

        val = val / 2;
        count++;
    }

    return count;
}

int getFivesZeroes(int val)
{
    int count = 0;
    while (val % 5 == 0 && val != 0)
    {

        val = val / 5;
        count++;
    }

    return count;
}

void type1(int arr[],int ql, int qr, int x)
{
    int twoCount = getTwosZeroes(x);
    int fiveCount = getFivesZeroes(x);

    for (int i = ql - 1; i < qr; i++)
    {
        arr[i] = arr[i] * x;

        zeroesInTwo[i] += twoCount;
        zeroesInFive[i] += fiveCount;
    }
}

void type2(int arr[], int ql, int qr, int y)
{
    int twoCount = getTwosZeroes(y);
    int fiveCount = getFivesZeroes(y);

    for (int i = ql - 1; i < qr; i++)
    {
        arr[i] = (i - ql + 2) * y;

        zeroesInTwo[i] = getTwosZeroes(i - ql + 2) + twoCount;
        zeroesInFive[i] = getFivesZeroes(i - ql + 2) + fiveCount;
    }
}

void type3(int arr[],int ql, int qr)
{
    int sumtwos = 0;
    int sumfives = 0;

    for (int i = ql - 1; i < qr; i++)
    {
        sumtwos += zeroesInTwo[i];
        sumfives += zeroesInFive[i];
    }
    sum += min(sumtwos, sumfives);

}

int main()
{
    int arr[]= {1,2,3,4,5};

    int n=sizeof(arr)/sizeof(arr[0]);

    for (int i = 0; i < n; i++)
    {
        zeroesInTwo[i] = getTwosZeroes(arr[i]);
        zeroesInFive[i] = getFivesZeroes(arr[i]);
    }
    type3(arr,2,5);
    type3(arr,4,5);

    type2(arr,1,3,1);
    type1(arr,4,5,10);

    type3(arr,2,4);

    cout << sum << endl;
    return 0;
}
3

Амалисозӣ дар Java барои Array дархостҳо барои зарб, иваз ва маҳсулот

import java.util.*;

class type123
{
    private static int zeroesInTwo[]=new int[1000];

    private static int zeroesInFive[]=new int[1000];



    private static int sum = 0;

    private static int getTwosZeroes(int val)
    {
        int count = 0;
        while (val % 2 == 0 && val != 0)
        {

            val = val / 2;
            count++;
        }

        return count;
    }

    private static int getFivesZeroes(int val)
    {
        int count = 0;
        while (val % 5 == 0 && val != 0)
        {

            val = val / 5;
            count++;
        }

        return count;
    }

    private static void type1(int arr[],int ql, int qr, int x)
    {
        int twoCount = getTwosZeroes(x);
        int fiveCount = getFivesZeroes(x);

        for (int i = ql - 1; i < qr; i++)
        {
            arr[i] = arr[i] * x;

            zeroesInTwo[i] += twoCount;
            zeroesInFive[i] += fiveCount;
        }
    }

    private static void type2(int arr[], int ql, int qr, int y)
    {
        int twoCount = getTwosZeroes(y);
        int fiveCount = getFivesZeroes(y);

        for (int i = ql - 1; i < qr; i++)
        {
            arr[i] = (i - ql + 2) * y;

            zeroesInTwo[i] = getTwosZeroes(i - ql + 2) + twoCount;
            zeroesInFive[i] = getFivesZeroes(i - ql + 2) + fiveCount;
        }
    }

    private static void type3(int arr[],int ql, int qr)
    {
        int sumtwos = 0;
        int sumfives = 0;

        for (int i = ql - 1; i < qr; i++)
        {
            sumtwos += zeroesInTwo[i];
            sumfives += zeroesInFive[i];
        }
        sum += Math.min(sumtwos, sumfives);

    }

    public static void main(String []args)
    {
        int arr[]= {1,2,3,4,5};

        int n=arr.length;

        Arrays.fill(zeroesInTwo,0);

        Arrays.fill(zeroesInFive,0);

        for (int i = 0; i < n; i++)
        {
            zeroesInTwo[i] = getTwosZeroes(arr[i]);
            zeroesInFive[i] = getFivesZeroes(arr[i]);
        }

        type3(arr,2,5);
        type3(arr,4,5);

        type2(arr,1,3,1);
        type1(arr,4,5,10);

        type3(arr,2,4);

        System.out.println(sum);

    }
}
3

Таҳлили мураккабӣ  

Мураккабии вақт

Эй (н) ки дар "Н" шумораи унсурҳои массив аст. Барои ҳар як дархости O (N) вақт лозим аст, зеро мо бояд тамоми диапазони ба мо додашударо тай кунем.

ҳамчунин нигаред
Аввал бедарак шудани мусбат

Мураккабии фазо

Эй (н) ки дар "Н" шумораи унсурҳои массив аст. Азбаски мо ду массивро ғайр аз вуруд сохтем, алгоритм мураккабии фазоии хатиро дорад.