Cube

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 1396    Accepted Submission(s): 1106

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 1492 
 

我的做法比较沙茶  直接枚举N*N*N旁边的有多少个 访问过的设置成0

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#define oo 0x13131313
using namespace std;
int map[51][51][51];
int N;
long long ans;
void CLEAR()
{
for(int i=0;i<=50;i++)
for(int j=0;j<=50;j++)
for(int k=0;k<=50;k++)
{
map[i][j][k]=0;
}
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
for(int k=1;k<=N;k++)
{
map[i][j][k]=1;
}
ans=0;
}
void getans(int a,int b,int c)
{
if(map[a][b][c-1]==1) ans++;
if(map[a][b][c+1]==1) ans++;
if(map[a+1][b][c]==1) ans++;
if(map[a-1][b][c]==1) ans++;
if(map[a][b-1][c]==1) ans++;
if(map[a][b+1][c]==1) ans++;
}
void solve()
{
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
for(int k=1;k<=N;k++)
{
getans(i,j,k);
map[i][j][k]=0;
}
}
int main()
{
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
while(cin>>N)
{
CLEAR();
solve();
ans=(N*N*N)*(N*N*N-1)/2-ans;
cout<<ans<<endl;
}
return 0;
}

实际答案是数学做法

通过前左上的枚举方法 很好的去避免了重复计数的可能 很不错的枚举思路

#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
cout<<(n*n*n*(n*n*n-1))/2-3*(n*n)*(n-1)<<endl;
return 0;
}
/*
这纯粹是一道数学题目,推理如下:
给你一个正方体,切割成单位体积的小正方体,求所有公共顶点数<=2的小正方体的对数。
公共点的数目只可能有:0,1,2,4.
很明显我们用总的对数减掉有四个公共点的对数就可以了。 总的公共点对数:n^3*(n^3-1)/2(一共有n^3块小方块,从中选出2块)(只有两个小方块之间才存在公共点,我们从所有的小方块中任意选出两个,自然就确定了这两个小方块的公共点的对数,从所有小方块中任意选取两个,总得选取方法数就是所有种类对数数目的总和!) 公共点为4的对数:一列有n-1对(n个小方块,相邻的两个为一对符合要求),一个面的共有 n^2列,底面和左面,前面三个方向相同,同理可得,故总数为:3*n^2(n-1)
所以结果为:(n^3 * (n^3-1))/2 - 3*n^2(n-1)
*/

【数学.前左上计数法】【HDU1220】Cube的更多相关文章

  1. php弱语言特性-计算科学计数法

    php处理字符串时存在一个缺陷问题,如果字符串为“1e1”,本该是一个正常的字符串,但是php会将它认为是科学计数法里面的e: 也就是按照数学的科学计数法来说:1e1=10^1=10,因此php会把这 ...

  2. BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)

    转自:https://blog.csdn.net/ochangwen/article/details/51531866 一.简介 Java在java.math包中提供的API类BigDecimal,用 ...

  3. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法

    保存在csv中的 013812345678,前面的0会被去掉,后面是科学计数法显示.保存成 col1,="013812345678" 即可. 注意,分隔符逗号后面直接接“=”等号. ...

  4. 2006Jam的计数法

    题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用 ...

  5. 1140 Jam的计数法

    1140 Jam的计数法 2006年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descri ...

  6. PAT乙级 1024. 科学计数法 (20)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  7. 关于数据导出到Excel科学计数法的处理

    SELECT    '=T("'+字段+'")' from table 在这里在显示的字段内容前加了 '=T("',在后面也加了'")'.在这这里T()是Exc ...

  8. 导出CSV,导出excel数字过长显示科学计数法解决方案

    再导出CSV表格时发现数字超过一定长度后会缩写成科学计数法,对于手机号和身份证就比较尴尬了. 在网上找了一下,大部分都是加"'"将数字转换为字符串,但是纠结于导出的数字前面有个单引 ...

  9. C#实现将输入的数自动转换为科学计数法

    一朋友写了一个把输入的整型或浮点数转换为科学计数法表示的算法,写好后叫我去帮他看看有没有什么bug之类的没有考虑周全.我还没有细看就已经把我吓到了----整整写了将近三百行代码.我也没说他什么,只是回 ...

随机推荐

  1. 关闭SQL Server 数据库所有使用连接

    使用存储过程终止:在查询分析器下创建终止数据库所有接连的存储过程,通过调用该存储过程可以关闭所有使用该数据库的连接操作.--创建终止使用数据库下所有进程的存储过程,参数为数据库名称use  maste ...

  2. 推荐一本好书给即将走入工作的程序员and程序媴

    近期买了几本IT届推崇的经典书籍.当中有一本<程序猿修炼之道:专业程序猿必知的33个技巧>.由于这本比較薄,所以先翻着看. 这本书有别于其它的技术书籍,事实上算不上一本技术书籍.它不是教你 ...

  3. The run destination XXX的 iPhone is not valid for Running the scheme 'Day7通讯录Demo'.

    错误:

  4. linux中运行python

    1.在终端中输入: python    **.py 2.最爽的方法: emacs中配置python运行环境.

  5. Codeforces Round #277.5 (Div. 2) A,B,C,D,E,F题解

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud A. SwapSort time limit per test    1 seco ...

  6. (原)编译caffe时提示未定义的引用(undefined reference to)

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5864715.html 参考网址: https://github.com/BVLC/caffe/issu ...

  7. linux下python3连接mysql数据库

    python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 1.安装pymysql pymysql就是作为python3 ...

  8. Java异常基础Exception

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  9. android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

    android listview 适配器在多种类型viewType报错: Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; ...

  10. 禁用ubuntu的触摸板和独显

    #!/bin/bash #This is a vgaoff & touchpadoff #By spinestars #-2-18#TouchPad & VGA OFF == ];th ...