s777tver109
?>

Написать программу в с++, определяющую, какое число чаще других встречается в последовательности целых случайных чисел. для генерации чисел использовать линейный конгруэнтный метод.

Информатика

Ответы

ВитальевичЕвгеньевич346
#include <iostream>
using namespace std;
const int n = 15;

double congruential(int &x) // функция генерации псевдослучайных чисел
{
 const int m = 100, // генерация псевдослучайных чисел в диапазоне
значений от 0 до 100 (выбирается случайно m > 0)
           a = 8, // множитель (выбирается случайно 0 <= a <= m)
         inc = 65; // инкрементирующее значение (выбирается случайно 0
<= inc <= m)
 x = ((a * x) + inc) % m; // формула линейного конгруэнтного метода
генерации псевдослучайных чисел 
 return (x / double(m));
}

int main()
{
    double arr[n];
    double num, frq, max_frq;
    int x0 = 20;
    for (int i=0; i<n; i++) {
        arr[i] = congruential(x0);
        cout << arr[i] << " ";
    }

    num = arr[0];
    max_frq = 1;
    for (int i=0; i < n-1; i++) {
        frq = 1;
        for (int k = i+1; k<n; k++) 
            if (arr[i] == arr[k])
               frq += 1;
        if (frq > max_frq) {
            max_frq = frq;
            num = arr[i];
        }
    }
    cout << endl;   
if (max_frq > 1) 
        cout << max_frq << " : " << num << endl;
else
        cout << "All uniqum" << endl;
    return 0;
}
ambstroy

Типовые задачи на Паскале (массивы)

Массив- это упорядоченный набор однотипных элементов, обозначаемых одним именем; доступ к элементу массива осуществляется по его номеру.

Для записи элементов массива в память компьютера нужно выделить для их хранения необходимое количество ячеек памяти, которое определяется размером массива.

В программе для каждого массива должны быть указаны его параметры: имя, размерность и размер. Бывают одномерные, двумерные и т.д. массивы. Это называется размерностью.

Одномерные массивы (последовательности).

A: 3,-4,0,3,-5,10,0

A[1]=3, A[3]=0, A[7]=0

I - номер элемента, A[I] - элемент массива, стоящий на I-ом месте

1. Сформировать и вывести на экран последовательность из n элементов, заданных датчиком случайных чисел на интервале [-23, 34].

Var a: array[1..100] of integer;

i, n: integer;

Begin

Write (‘Сколько элементов? ’); Readln (n);

For i=1 to n do

begin

a[i]:= Random(58)-23;

writeln (a[i],’ ‘);

end;

End.

Var a: array[1..100] of integer;

i, n, p: integer;

Begin

Write (‘Сколько элементов? ’); Readln (n);

p:=1;

For i:=1 to n do

begin

write (‘введите число’); readln (a[i]);

p:=p*a[i];

end;

writeln(‘произведение элементов равно: ‘,p);

End.

Var a: array[1..100] of real;

i, n: integer;

s: real;

Begin

Write (‘n=’); Readln (n);

s:=0;

For i:=1 to n do

begi

write (‘введите число’); readln (a[i]);

s:=s+a[i];

end;

writeln(‘сумма элементов равна ‘,s);

End.

Var a: array[1..100] of real;

i, n: integer;

s,sred: real;

Begin

Write (‘n=’); Readln (n);

s:=0;

For i:=1 to n do

begin

write (‘введите число’); readln (a[i]);

s:=s+a[i]

end;

sred:=s/n;

writeln(‘среднее арифметическое элементов: ‘,s);

End.

Program sumshet;

Var a: array[1..100] of real;

i, n: integer;

s,sred: real;

Begin

Write (‘n=’); Readln (n);

s:=0;

For i:=1 to n do

begin

write (‘введите число’); readln (a[i]);

if i mod 2 = 0 then s:=s+a[i];

end

Var a: array[1..100] of integer;

i, n, p: integer;

Begin

Write (‘Сколько элементов? ’); Readln (n);

P:=1;

For i=1 to n do

begin

a[i]:= Random(46)-19;

writeln (a[i],’ ‘);

if i mod 2 <> 0 then P=P*a[i];

end;

Writeln(‘Произведение элементов с нечетными номерами:’, P);

Var a: array[1..100] of integer;

i, n, p, t: integer;

Begin

Write (‘Сколько элементов? ’); Readln (n);

P:=1;

For i=1 to n do

begin

a[i]:= Random(104)-56; writeln (a[i],’ ‘);

if (i mod 2 = 0) and (a[i]>t) then P=P*a[i];

end;

Writeln(‘Произведение элементов с четными номерами, превосходящие число t:’, P);

РЕКЛАМА

End.

Var a: array[1..100] of real;

i, n: integer;

min: real;

Begin

Write (‘n=’); Readln (n);

For i:=1 to n do

begin

write(‘a[‘,i,’]=’); readln (a[i]);

end;

min:=a[1];

For i:=2 to n do

If a[i]< min then min:=a[i];

Program numberminim;

Var a: array[1..100] of integer;

i, n, num, min: integer;

Begin

Write (‘n=’); Readln (n);

For i:=1 to n do

begin

a[i]:= Random(46)-20;

writeln (a[i]);

end;

min:=a[1];

num:=1;

For i:=2 to n do

If a[i]< min then

begin

min:=a[i];

num:=i;

end;

Writeln(‘ номер наименьшего элемента: ‘,num);

End.

Program kolv0;

Var a: array[1..100] of integer;

i, n, k: integer;

Begin

Write (‘n=’); Readln (n);

For i:=1 to n do

begin

Write(‘a[‘,i,’]=’); readln (a[i]);

if a[i]=0 then k:=k+1;

end

Var a: array[1..100] of integer;

i, n, k: integer;

Begin

Write (‘n=’); Readln (n);

For i:=1 to n do

begin

Write(‘a[‘,i,’]=’); readln (a[i]);

if a[i] mod 2=0 then k:=k+1;

end;

Writeln(‘количество четных элементов: ’, k);

end.

Var a: array[1..10] of real;

i, k: integer;

C, S, sred: real;

Begin

For i:=1 to 10 do

begin

write(‘a[‘,i,’]=’); readln (a[i]);

end;

write(‘введите С: ‘); readln (C );

For i:=1 to 10 do

begin

If a[i]>C then

begin S=S+a[i]; K=K+1; end;

end;

sred=S/k;

Writeln(‘среднее арифметическое чисел, превосходящих ‘,C,’ равно ‘,sred)

Var a: array [1..100] of integer;

i, n, p: integer;

Begin

p:=1;

write ('n='); readln (n);

for i:=1 to n do

begin

write ('a[',i,']='); readln (a[i]);

if i mod 2=0 then p:=p*a[i];

end;

Writeln ('произведение элементов массива с четными номерами равно ',p);

End

*Вроде правильно*

thecoffeeowl

import math

import sys

def get_first_max(tree, idx, l, r, L, R):

 if r <= L or R <= l:

   return -1

 if l >= L and r <= R:

   return tree[idx]

 m = (l + r) // 2

 return max(get_first_max(tree, idx * 2 + 1, l, m, L, R), get_first_max(tree, idx * 2 + 2, m, r, L, R))

num = input()

k = int(input())

n = len(num)

N = 2**math.ceil(math.log2(n))

M1 = 10 ** 7

M2 = 10 ** 6

tree = [-1] * (2 * N)

for i in range(n):

 tree[N - 1 + i] = int(num[i]) * M1  + M2 - i

for i in range(N - 2, -1, -1):

 tree[i] = max(tree[2 * i + 1], tree[2 * i + 2])

i = 0

ans = ""

for _ in range(n - k):

 maximum = get_first_max(tree, 0, 0, N, i, i + k + 1)

 val = maximum // M1

 pos = M2 - maximum % M1

 ans += str(val)

 k -= pos - i

 i = pos + 1

 if k == 0:

   ans += num[i:]

   break

print(ans)

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Написать программу в с++, определяющую, какое число чаще других встречается в последовательности целых случайных чисел. для генерации чисел использовать линейный конгруэнтный метод.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

annaar497
marinanx
alaevluka77
melissa-80
ribanina
Бунеева
Косоногов Иосифовна
rusinfopro
mirogall
Nataliatkachenko1
kulturarai44
innavinogradova1385
mrropevvv
Dampil
gernovoy