Advertisement
Guest User

asd

a guest
Dec 11th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.     int n = 0;
  6.     std::cin >> n;
  7.     int* a = new int[n * n];
  8.     int* b = new int[n];
  9.     int nn = n * n;
  10.     for (int i = 0; i < n * n; i++) {
  11.         std::cin >> a[i];
  12.     }
  13. //  for (int i = 0; i < n * n; i++) {
  14. //      std::cout << a[i];
  15. //  }
  16. //  for (int i = 0; i < n; i++) {
  17. //      b[i] = 0;
  18. //      for (int j = 0; j < n; j++) {
  19. //          b[i] = b[i] + a[i * n + j];
  20. //      }
  21. //      b[i] = b[i] / n;
  22. //  }
  23.    
  24.         __asm {
  25.             mov edi, a    //; Массив исходный
  26.             mov esi, b     //; Массив результатов
  27.             mov ecx, -1    //; счетчик внешнего цикла, j
  28.             xor ebx, ebx    //счетчик внутреннего цикла, i
  29.             xor eax, eax
  30.             for:
  31.             inc ecx
  32.                 cmp ecx, n    //внешний цикл
  33.                 jge endfor
  34.                 xor ebx, ebx    //обнуляем счетчик внутренного цикла
  35.                 internalfor :
  36.             cmp ebx, n    //идем по строке пока i меньше n
  37.                 jge for    //возвращаемся во внешний цикл по условию
  38.                 mov eax, 0
  39.                 mul ecx
  40.                 add eax, ebx
  41.                 mov edx, a[eax * 4]
  42.                 add[esi], edx    //кладем в b[j] сумму j - ой строки поэлементно a[j + i]
  43.                 add esi, 4
  44.                 inc ebx    //увеличиваем i
  45.                 jmp internalfor    //возвращаемся в начало внутренного цикла
  46.                 endfor :
  47.             xor ecx, ecx
  48.                 mov ebx, n
  49.                 almost :
  50.             cmp ecx, n    //сравниваем со счетчиком, переходим в конец, если массив всё
  51.                 jge end
  52.                 mov eax, [esi + ecx * 2]    //просто цикл по всем элементам результирующей матрицы
  53.                 cdq
  54.                 idiv ebx
  55.                 inc ecx    //эта штука основывается на том, что чисел "2" больше там, где среднее арифметическое больше единицы (а так как один ноль всегда есть и сумма, даже если в строке одни "1", будет отвечать требованиям )
  56.                 jmp almost
  57.                 end :
  58.         }
  59.        
  60.  
  61.         for (int i = 0; i < n; i++) {
  62.             if (b[i] >= 1) {
  63.                 std::cout << i + 1;
  64.             }
  65.         }
  66.  
  67.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement