杭电1220 Cube

Cube

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1672    Accepted Submission(s): 1321


Problem Description
Cowl is good at solving math problems. One day a friend asked him such a question: You are given a cube whose edge length is N, it is cut by the planes that was paralleled to its side planes into N * N * N unit cubes. Two unit cubes may have no common points or two common points or four common points. Your job is to calculate how many pairs of unit cubes that have no more than two common points.

Process to the end of file.
 

Input
There will be many test cases. Each test case will only give the edge length N of a cube in one line. N is a positive integer(1<=N<=30).
 

Output
For each test case, you should output the number of pairs that was described above in one line.
 

Sample Input
  
  
1 2 3
 

Sample Output
  
  
0 16 297
Hint
Hint
The results will not exceed int type.
 

Author
Gao Bo
 

Source
 

Recommend
Ignatius.L   |   We have carefully selected several similar problems for you:   1221  1225  1224  3450  1798 
 
意思是,求n*n*n的正方体内有多少对公共定点不超过2的1*1*1正方块,也就是说求n*n*n的正方体内有多少对不相邻的正方块,可以先求的,在不考虑重复的情况下,共有(n*n*n)*(n*n*n-1)对正方块,考虑每个定点相邻的正方块对数有3对,即减去8*3,在考虑,每个每条棱上每个相邻的有4对,有12 条棱,减去(n-2)*4*12,再考虑每个平面上每个正方块相邻的有5 对,减去(n-2)*(n-2)*5*6,再考虑每个不暴露在外的正方块相邻的有6个,减去(n-2)*(n-2)*(n-2)*6,最后结果再除以2,去掉重复的即可:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
__int64 num1,n,num2,i,j,k,l,m;
int main()
{
	while(scanf("%I64d",&n)!=EOF)
	{
		num1=(n*n*n)*(n*n*n-1);
		num2=8*3+(n-2)*4*12+(n-2)*(n-2)*5*6+(n-2)*(n-2)*(n-2)*6;
		m=num1-num2;
		m/=2;
		printf("%I64d\n",m);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值