题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1220
做题思路:先在n^n^n个单位立方体中取2个(即一对),然后减去有公共点为4的立方体对数,即为所求。
总的对数:n*n*n的立方体可以分成n*n*n个单位立方体,所以一共有C(n*n*n,2)对 (即:n^3*(n^3-1)/2)。
公共点为4的对数:一列有n-1对(n个小方块,相邻的两个为一对)。一个面的共有 n^2列(从前往后看)。
底面,左面,前面三个方向相同。故总数为:3*n^2*(n-1)。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n; 6 while(cin>>n){ 7 cout<<(n*n*n*(n*n*n-1)/2-3*n*n*(n-1))<<endl;//推导公式 8 } 9 return 0; 10 }