Marius este pasionat de pătrate perfecte. Se numeşte pătrat perfect un număr de forma x
2
(unde x
este număr natural).
Într-o matrice T
cu n
linii şi m
coloane, Marius a scris numere naturale nenule. Apoi construieşte o altă matrice NR
, tot cu n
linii şi m
coloane. Elementul NR[i][j]
= numărul de perechi de pătrate perfecte a căror diferenţă este egală cu T[i][j] (1≤i≤n, 1≤j≤m)
.
Cerința
Cunoscându-se numerele n
, m
şi matricea T
, să se afişeze matricea NR
.
Date de intrare
Fişierul de intrare diferenta.in
conţine pe prima linie valorile n
şi m
, reprezentând numărul de linii, respectiv de coloane ale matricei. Pe următoarele n
linii ale fişierului de intrare se găsesc câte m
numere naturale nenule, reprezentând elementele matricei T
. Valorile scrise pe aceeaşi linie sunt separate prin câte un spaţiu.
Date de ieșire
Fişierul de ieşire diferenta.out
conţine n
linii pe care sunt scrise câte m
numere naturale separate prin câte un spaţiu, reprezentând elementele matricei NR
.
Restricții și precizări
• 1 ≤ n ≤ 100
Exemplu
diferenta.in
2 3 2 3 4 5 6 7
diferenta.out
0 1 1 1 0 1
Explicație
Pentru 2
şi 6
nu există nicio pereche de pătrate perfecte pentru care diferenţa să fie 2
, respectiv 6
.
Pentru 3
există perechea de pătrate perfecte 4 1
, etc
#include <bits/stdc++.h> using namespace std; ifstream fin("diferenta.in"); ofstream fout("diferenta.out"); int main() { int n , m , a[102][102] , cnt; fin >> n >> m; for(int i = 1 ;i <= n ; ++i) { for(int j = 1 ; j <= m ; ++j) fin >> a[i][j]; } for(int i = 1 ;i <= n ; ++i) { for(int j = 1 ; j <= m ; ++j) { cnt = 0; for(int d = 1; d * d <= a[i][j] ; ++d) { if((a[i][j]%d == 0 && (d+a[i][j]/d)%2==0)) cnt++; } fout<<cnt << " "; } fout<<endl; } fin.close(); fout.close(); return 0; }