Pagini recente » Cod sursa (job #1493430) | Cod sursa (job #620369) | Cod sursa (job #2858954) | Cod sursa (job #2409817) | Cod sursa (job #477972)
Cod sursa(job #477972)
#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<=m;++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";
}