Advertisement
kirya_shkolnik

27. Задание #T1933

Jun 24th, 2020
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. //Дана последовательность  целых положительных чисел. Рассматриваются все пары элементов последовательности,
  2. //находящихся на расстоянии не меньше 4 (разница в индексах элементов должна быть 4 или более).
  3. //Необходимо определить количество пар, произведение чисел в которых кратно 29.
  4.  
  5. //будем юзать сдвиг массива и каждый раз откидывать крайний (нулевой элемент массива) потому что подойдет разница в 4 элемента
  6.  
  7. #include <iostream>
  8.  
  9. using namespace std;
  10.  
  11. int main(){
  12.     const int diff = 4, div = 29; // diff - растояние между элементами, div - кратно чему (не используется)
  13.     int a[diff], temp, N, count=0; // всякая понятная шняга
  14.     int div1=0,div29=0; // запоминать числа кратные 1,29 (делители исходного числа)
  15.     cin >> N;
  16.     for(int i = 0; i < diff ; ++i){ // вводим первые diff элементов массива
  17.         cin >> a[i];
  18.     }
  19.     for(int i=diff; i<N; ++i){
  20.         cin >> temp; // новый элемент
  21.         if(a[0] % 29 == 0) div29++; // рассматриваем 0 элемент массива
  22.         div1++;
  23.        
  24.  
  25.         // сравниваем с числами которые уже вышли из массива и только что добавленным 0 элементом массива
  26.         // (разница между текущим temp и a[0] как раз в diff)
  27.         if(temp % 29 == 0) count+= div1;
  28.         else count+= div29;
  29.         // конец сравнивания
  30.  
  31.  
  32.         for(int j=0; j<diff-1; ++j) a[j] = a[j+1]; // опускаем все элементы массива на 1 вниз
  33.         a[diff-1]=temp; // вместо ластового элемента массива записываем новый temp
  34.     }
  35.    
  36.     cout << count; // profit.
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement