VTRI - Triangles

Tác giả: flashmt

Ngôn ngữ: C++

#include<iostream>
#include<algorithm>
#include<cmath>
#define fr(a,b,c) for (a=b;a<=c;a++)
#define frr(a,b,c) for (a=b;a>=c;a--)
using namespace std;
int m,n,x,y,s,i,j;
unsigned long long r,re;

int main()
{
    cin >> m >> n >> s;
    s*=2;
    fr(x,1,m)
     fr(y,1,n)
     {
        r=0;
        if (x*y==s) r=(x+y)*2;
        else
        {
            fr(i,1,x)
            {
               j=i*y-s;
               if (j%x==0) j/=x;
               if (j<0 || j>y) continue;
               int u=x*y-i*j-(x-i)*j*2-(y-j)*(x-i);
               if (u==s) r+=4;
            }           
        }
        frr(i,x-1,1)
          frr(j,y-1,1)
          {
            int u=x*y*2-i*y-j*x-(x-i)*(y-j);
            if (u>s) break;
            if (u==s) r+=4;
          }
        re+=r*(m-x+1)*(n-y+1);
     }
    cout << re << endl;
    return 0;
}


Download