把一个长度为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; }
时间: 2024-11-04 11:20:50