P8692题解
一道数学题。
我们分开处理在一个边长为
只考虑目标正方形的顶点落在当前正方形的边上的情况。
挂一张丑图:
这是当
我们关注到周围剩余的三角形,不难发现,四个直角三角形的直角边之和为
由于四个三角形全等,所以每个三角形的直角边和为
设两条直角边分别是
当
所以当大正方形边长为
而边长为
证明:
若点
解得:
故有
最后统计即可。
代码:
十年 OI 一场空,不开 long long 见祖宗!
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int n,ans=0;
cin>>n;
n--;//由于给的是点,使用我们要转化为段
for(int i=1;i<=n;i++){
ans=(ans+(n-i+1)*(n-i+1)*i)%1000000007;
}
cout<<ans;
return 0;
}