mansur071199486
?>

Даны цело численный массив а [1: n] и число м. найти множество элементов а [i1], а [i2], а [ik] (1< i1 < < ik < n), что а [i1] + а [i2] + а [ik] = м.

Информатика

Ответы

Виктор Попова
Описание  алгоритма:   задан  список  а и число m, n  =  len(a). для того чтобы найти все возможные варианты выборки из а необходимо построить множество двоичных чисел от 1 до 2^n-1  и  складывать  только  те  индексы разряд которого которого в  двоичном  числе  равен  1,  т.е.  для  двоичного  числа  1100 это  будут  индексы  2  и 3. если  сумма  будет  равна  м  вывести  последовательность  индексов,  иначе  идем  далее язык python a=[21,4,5,4,32]  #  массива  а m  =  9                       #  м for  i  in  range(1, 2**len(a)-1): # для  всех i  от  1  до  2^n-1   ind  =  []                                                        #  список  индексов  используемых  в  данной  итерации     cnt  =  0                                                        #  сумма  элементов  а     for  j  in  range(len(a)):                     #  для  всех  j от  0  до  n         if  i& 2**j:                                                     # если  индекс  есть  в  бинарной  записи i,  то             cnt  += a[j]                                      # прибавить  к  сумме  a[j]             ind.append(str(j))                               # запомнить  индекс             if  cnt  >   m:   break                      # если  сумма  больше m  выходим  из  цикла   if  cnt  ==  m:                                             # если  сумма  равна  m         print  ', '.join(ind)                            # печатаем  список  эффективных  индексов для  данной  программы  будет  выдано  две  строки 1,2 2,3
valueva260860
//java class main { public static void main(string[] args){ int[] a = new int[new java.util.(100)]; for (int i = 0; i < a.length; i++) a[i] = new java.util.(499)+1; for (int i = 0; i < a.length; i++) system.out.print(a[i] + " "); int b = 0; int c = 1; for (int i = 0; i < a.length; i++) if  (a[i] % 3 == 0 & & a[i] % 2 == 1 )  { b += a[i]; c *= a[i]; }system.out.print("\nsum: " + b + "\nmulti: " + c); }}проверка: $ javac main.java327 206 226 438 363 169 433 338 75 127 429 77 271 487 384 173 325 169 250 128 432 214 297 31 238 294 307 151 425 1 19 373 136 246 86 368 183 38 92 186 334 64 486 107 285 240 445 480 271 174 8 325 476 143 169 496 254 437 330 227 496 134 460 20 395 387sum:   2346multi:   936904523
alina-bas
Const n=5; type mass=array[1..n] of integer; var  i,p,s: integer;             a: mass; begin        p: =1;       s: =0;         for i: =1 to n do          read (a[i]);         for i: =1 to n do        if (a[i] mod 3)=0 and (a[i]mod 2)< > 0 then                  begin                      s: =s+a[i];                     p: =p*a[i];                 end;       writeln('summ= ', s);       writeln('proizvedinie= ', p); end.

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

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

Даны цело численный массив а [1: n] и число м. найти множество элементов а [i1], а [i2], а [ik] (1< i1 < < ik < n), что а [i1] + а [i2] + а [ik] = м.
Ваше имя (никнейм)*
Email*
Комментарий*

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

egorsalnikov1997139
Михайлович_гергиевич315
gubernatorov00
smokestylemos
vfilina
martinson1136
komolovda
Lilykl
UvarovAndrei
alekbur
cafegasoil
Иванович
d2904
evrotrastop64
D.Yu. Polina1703