问题描述
进行专业的体育运动需要努力锻炼,更需要顶尖设计师设计的装备。比如说网球。你不仅得体魄强健,还得拥有一把史诗级的球拍。在这道题里,你的任务是对网球业的发展作出杰出贡献,设计一种具有革命意义的全新理念的史诗级球拍!
这将是一种三角形的球拍——不仅仅是三角形,更是一个正三角形!设计完外形后你要在这个框架上穿线。正三角形的每条边上有n个小孔,把该边分成了等距的n+1段。每条边上,离每个顶点最近的m个小孔是用来改善气流的通风孔,因此线不能穿过这些孔。源于一种创新的理念,球拍网需要连成一个钝角三角形,三个角分居正三角形框架三条不同的边上。请你帮忙统计,有多少种可行的三角形球拍网设计方案。
两个三角形球拍网不同,当且仅当它们固定在某一位置拍照片是不同的。(即不考虑旋转同构)
输入格式
一行两个整数n、m。
输出格式
一个整数,表示可行的三角形球拍网设计方案的数量。
样例输入
10 1
样例输出
210
数据规模和约定
对于30%的数据:n≤1001。
对于100%的数据:1≤n≤32000,0≤m≤n/2。
把每一条边都算出来,三个循环时间复杂度太高了,所以有点超时了。。。
#include <iostream>
using namespace std;
int main() {
int n,m,ans=0;
cin>>n>>m;
for(int i=m+1;i<=n-m;i++){
for(int j=m+1;j<=n-m;j++){
for(int k=m+1;k<=n-m;k++){
int a=i*i+(n+1-j)*(n+1-j)-i*(n+1-j);
int b=j*j+(n+1-k)*(n+1-k)-j*(n+1-k);
int c=k*k+(n+1-i)*(n+1-i)-k*(n+1-i);
if(a>b+c){
ans++;
}
}
}
}
cout<<3*ans<<endl;
return 0;
}