Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Дана последовательность целых положительных чисел. Рассматриваются все пары элементов последовательности,
- //находящихся на расстоянии не меньше 4 (разница в индексах элементов должна быть 4 или более).
- //Необходимо определить количество пар, произведение чисел в которых кратно 29.
- //будем юзать сдвиг массива и каждый раз откидывать крайний (нулевой элемент массива) потому что подойдет разница в 4 элемента
- #include <iostream>
- using namespace std;
- int main(){
- const int diff = 4, div = 29; // diff - растояние между элементами, div - кратно чему (не используется)
- int a[diff], temp, N, count=0; // всякая понятная шняга
- int div1=0,div29=0; // запоминать числа кратные 1,29 (делители исходного числа)
- cin >> N;
- for(int i = 0; i < diff ; ++i){ // вводим первые diff элементов массива
- cin >> a[i];
- }
- for(int i=diff; i<N; ++i){
- cin >> temp; // новый элемент
- if(a[0] % 29 == 0) div29++; // рассматриваем 0 элемент массива
- div1++;
- // сравниваем с числами которые уже вышли из массива и только что добавленным 0 элементом массива
- // (разница между текущим temp и a[0] как раз в diff)
- if(temp % 29 == 0) count+= div1;
- else count+= div29;
- // конец сравнивания
- for(int j=0; j<diff-1; ++j) a[j] = a[j+1]; // опускаем все элементы массива на 1 вниз
- a[diff-1]=temp; // вместо ластового элемента массива записываем новый temp
- }
- cout << count; // profit.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement