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;
}