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. 用函数式的 Swift 实现图片转字符画的功能

    今天整理 Pocket 中待看的文章,看到这篇<Creating ASCII art in functional Swift>,讲解如何用 Swift 将图片转成 ASCII 字符.具体原 ...

  2. qt 操作excel表格

     自己编写的一个Qt C++类,用于操作excel表格,在Qt中操作excel需在.pro中增加CONFIG+=qaxcontainer配置. 1.打开Excel:objExcel = new QAx ...

  3. Android 打造自己的个性化应用(三):应用程序的插件化

    在android的项目开发中,都会遇到后期功能拓展增强与主程序代码变更的现实矛盾,也就是程序的灵活度. 由于linux平台的安全机制,再加上dalvik的特殊机制,各种权限壁垒,使得开发一个灵活多变的 ...

  4. CLR via C# - GC

    //像背书一样,记录下吧 1.CLR分配资源 托管堆上维护着一个指针NextObjPtr.该指针表示下一个新建对象在托管堆上的位置.C#的new Object会产生IL newobj指令,NextOb ...

  5. Android应用去掉标题栏的方法

    1.在代码里实现 this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏,this指当前的Activity 这句代码一定要加在setCon ...

  6. 写个点击input框 下方弹出月份时间等

    <input type="text" name="test" id="test" value="" "& ...

  7. 浏览器的Storage做缓存需要注意的地方

    使用浏览器的Storage来做缓存.如: window.sessionStorage.setItem("cache", $(data).stringify()) 需要注意以下几点: ...

  8. haproxy之配置文件解析

    功能--> 提供高可用/负载均衡/基于tcp和http应用的代理;支持虚拟主机,特别适用于负载特大的web站点. 配置文件解析--> #配置文件-->开启/proc/net/ipv4 ...

  9. git status简介

    git status命令可以列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit)的文件.. 比如; git status # On branch maste ...

  10. IClone地形编辑器结合T4M插件在Unity3D使用

    通过IClone编辑器打造的地形,经过T4M插件的转化后,资源占用极少,比在Unity中自己刷出来的地形再通过T4M转化的要小的的多多了,非常适合用在手机上. IClone地形编辑器下载地址: 如果对 ...