Pagini recente » Cod sursa (job #424995) | Cod sursa (job #2458956) | Cod sursa (job #1795731) | Cod sursa (job #2398481) | Cod sursa (job #494933)
Cod sursa(job #494933)
# include <cstdio>
typedef long long ll ;
const char *FIN = "dreptunghiuri.in", *FOU = "dreptunghiuri.out" ;
const int MAX = 404 ;
int V[MAX][MAX] ;
int pow[MAX * MAX] ;
int N, M ;
ll sol ;
void swap ( int &i, int &j ) {
int aux = i ;
i = j ;
j = aux ;
}
int main ( void ) {
fscanf ( fopen ( FIN, "r" ) , "%d %d", &M, &N ) ;
if ( M > N ) {
swap ( M, N ) ;
}
for ( int i = 1; i < N; ++i ) {
pow[i * i] = i ;
}
for ( int i = 1; i < M; ++i ) {
for ( int j = 1; j < N; ++j ) {
if ( i <= j ) {
for ( int k = 0; k < i; ++k ) {
int d = j * j - 4 * k * ( i - k ) ;
if ( d < 0 || ( d && pow[ d ] == 0 ) ) {
continue ;
}
d = pow[ d ] ;
int X1 = j - d >> 1, X2 = j + d >> 1 ;
X1 >= 0 && X1 < j ? ++V[i][j] : 0 ;
X2 >= 0 && X2 < j && X2 != X1 ? ++V[i][j] : 0 ;
}
} else {
V[i][j] = V[j][i] ;
}
sol += static_cast < ll > ( ( M - i ) * ( N - j ) * V[i][j] ) ;
}
}
fprintf ( fopen ( FOU, "w" ) , "%lld", sol ) ;
}