首页 > 代码库 > hdu 4486

hdu 4486

 把一个长度为n的绳子分成三段,用这3段绳子组成三角形,问有多少个不同的三角形
  如果一个三角形的三边都不相等,可以算两次.

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cstdlib>#include<cmath>#include<queue>#include<vector>#include<set>using namespace std;int ca,n,t,y,miny,maxy,ans;int main(){      scanf("%d",&t);      while(t--)      {            ans=0;            scanf("%d%d",&ca,&n);            for(int x=1;x<=n/3;x++)            {                 miny=max(x,n/2-x+1);                 maxy=(n-x)/2;                 if(x==miny)                        --ans;                 if(x!=maxy&&maxy==n-x-maxy)                        --ans;                 ans+=(maxy-miny+1)*2;            }            printf("%d %d\n",ca,ans);      }      return 0;}

  

hdu 4486