杭电ACM1220——Cube~~简单的数学题

题目的意思是给你一个立方体的棱长 n ,将这个立方体分解成单位长度为1的小立方体。问这个大立方体分解之后的n * n * n个小立方体中有多少对小立方体的公共点不超过2个。

立方体分解之后,只会出现 0, 1, 2, 4个公共点的情况,所以算出所以的对数,然后减去4个公共点的情况就可以解决了。

关键是4个公共点的情况有多少对?

首先是有3个面没有露出来,总共只有8个,也就是那8个顶点,所以有 3 * 8对。

然后是有4个面没有露出来,总共有(n - 2)* 12种,所以有4 *  (n - 2)* 12。

然后是有5个面没有露出来,总共有(n - 2)^ 2 * 6种,所以有5 * (n - 2)^ 2 * 6。

最后是有6个面没有露出来,总共有(n - 2)^ 3种,所以有 6 * (n - 2)^ 3。

因为有重复,所以全部加起来还要除以2.

所以,4个公共点的情况有  (3 * 8 + 4 *  (n - 2)* 12 + 5 * (n - 2)^ 2 * 6 +  6 * (n - 2)^ 3)/ 2.

下面的是AC的代码:

#include <iostream>
using namespace std;

int main()
{
	int n;
	while(cin >> n)
	{
		cout << n * n * n * (n * n * n - 1) / 2 - (6 * (n - 2) * (n - 2) * (n - 2) +
			24 + 4 * (n - 2) * 12 + 5 * (n - 2) * (n - 2) * 6) / 2 << endl;
	}
	return 0;
}
时间: 06-15

杭电ACM1220——Cube~~简单的数学题的相关文章

杭电oj~1005 简单的找周期

Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 153132    Accepted Submission(s): 37335 Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A

杭电2540--遮挡判断(数学题)

遮挡判断 Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 910    Accepted Submission(s): 295 Problem Description 在一个广场上有一排沿着东西方向排列的石柱子,阳光从东边以一定的倾角射来(平行光).有的柱子可能被在他东边的高大的柱子的影子给完全遮挡住了.现在你要解决的问题是求出有多少柱

杭电ACM1240——Asteroids!~~简单的BFS

这道题目,三维空间上的BFS,给你起点和终点,看能否找到一条路,O表示可以走,X表示不可以走!~ 理解了题目,就可以用队列来实现BFS来求解. 下面的是AC 的代码: #include <iostream> #include <cstdio> #include <cstring> #include <queue> using namespace std; class data { public: int xyz; int count; }; char map

杭电1175——连连看~简单的广搜

这一题,做了好久,终于AC了,感觉题目有点坑,唉,题目不是很难,就是坑!!-- 找一个错误,找了半天,后来才看到是变量用错了!!~ 题目中的b数组是标记数组. #include <iostream> #include <cstdio> #include <queue> using namespace std; #define INF 1000000 int xy[4][2] = { { -1 , 0 } , { 1 , 0 } , { 0 , -1 } , { 0 ,

魔咒词典------HDOJ杭电1880(字符串的处理,很简单)

Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词典.当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能:当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒.如果他要的魔咒不在词典中,就输出"what?" Input 首先列出词典中不超过100000条不同的魔咒词条,每条格式

杭电 HDU ACM 1283 最简单的计算机

最简单的计算机 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5238    Accepted Submission(s): 2967 Problem Description 一个名叫是PigHeadThree的研究组织设计了一台实验用的计算机,命名为PpMm.PpMm只能执行简单的六种命令A,B,C,D,E,F:只有二个内存M1,M

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI

杭电ACM1098——Ignatius&#39;s puzzle

这题,简单的数学题. 对于函数,f(x)=5*x^13+13*x^5+k*a*x,输入k,对于任意的x,是否存在一个数a,使得f(x)被65整除. 对于任意的x.所以当x = 1时,f(x) = 18 + a* k,满足被65整除. 也就是(18 + a * k)% 65 = 0. 所以,一切都很简单了. 下面的是AC的代码: #include <iostream> using namespace std; int main() { int k; while(cin >> k) {