Pagini recente » Cod sursa (job #1393431) | Cod sursa (job #2442612) | Cod sursa (job #2070254) | Cod sursa (job #555255) | Cod sursa (job #494919)
Cod sursa(job #494919)
#include<fstream>
using namespace std;
const char iname[]="dreptunghiuri.in";
const char oname[]="dreptunghiuri.out";
const int maxn=405;
ifstream f(iname);
ofstream g(oname);
int p,i,j,n,m,x1,x2,delta,rad[maxn*maxn],k,a,b,c,A[maxn][maxn];
long long rez;
int main()
{
f>>n>>m;
--n,--m;
// if(n>m)
//i=n,n=m,m=i;
for(i=1;i<=n;++i)
rad[i*i]=i;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
p=0;
if(j>=i)
for(k=0;k<i;++k)
{
a=1,b=-j,c=k*(i-k);
delta=b*b-4*a*c;
if(delta<0||(delta!=0&&rad[delta]==0))
continue;
delta=rad[delta];
x1=(-b-delta)/2;
x2=(-b+delta)/2;
if(x1>=0&&x1<j)
++p;
if(x2!=x1&&x2>=0&&x2<j)
++p;
}
else
p=A[j][i];
A[i][j]=p;
rez+=1LL*(n-i+1)*(m-j+1)*p;
}
g<<rez<<"\n";
}