Pagini recente » Cod sursa (job #1619307) | Cod sursa (job #2430028) | Cod sursa (job #544200) | Cod sursa (job #2909812) | Cod sursa (job #906364)
Cod sursa(job #906364)
#include<fstream>
using namespace std;
#define max_n 410
ifstream f("dreptunghiuri.in");
ofstream g("dreptunghiuri.out");
int i , j , n , m , sol ;
int rad[max_n*max_n];
void initializare(){
for(int i = 1 ; i <= max_n*max_n ; i++)
rad[i] = -1;
for(int i = 0 ; i <= max_n ; i++)
rad[ i*i ] = i;
}
int nr_dr(int L , int H){
L--; H--;
int nr = 1 , delta;
int sol1 , sol2;
for(int A = 1 ; A < H ; A++){
delta = L*L + 4*A*(H-A);
if(delta == 0 && L%2==0 )
nr++;
if(delta < 0)
continue;
delta = rad[delta];
if(delta == -1)
continue;
sol1 = L + delta;
sol2 = L - delta;
if( sol1%2 == 0 ){
sol1 /= 2;
if(0<sol1 && sol1<L)
nr++;
}
if( sol2%2 == 0 ){
sol2 /= 2;
if( 0<sol2 && sol2<L )
nr++;
}
}
return nr;
}
int main(){
f>>n>>m;
initializare();
for( i = 2; i <= n ; i++ )
for( j = 2 ; j <= m ; j++ ){
sol += nr_dr( i , j )*( n-i+1 )*( m-i+1 );
}
g<<sol;
return 0;
}