题意:
有一个N*N*N的立方体,将其分成1*1*1的单位立方体,任意两个立方体的交点个数为0,1,2,4个,现在要求的是小于等于2个交点的对数有多少个。
思路:N*N*N的立方体可以分成N*N*N个单位立方体,所以一共有C(N*N*N,2)对,有4个交点的对数3*N*N*(N-1)个
所以要求的有:C(N*N*N,2)-3*N*N*(N-1)个
代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main(){
int n;
while(~scanf("%d",&n)){
long long tmp=n*n*n;
long long ans1=tmp*(tmp-1)/2;
tmp=n*n;
long long ans2=3*tmp*(n-1);
ans1-=ans2;
printf("%lld\n",ans1);
}
return 0;
}