刷题第一天:南邮NOJ完美立方
来源:互联网 发布:云端软件 编辑:程序博客网 时间:2024/06/04 20:00
完美立方
比赛描述
a3 = b3 + c3 + d3为完美立方等式。例如123 = 63 + 83 + 103 。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a3 = b3 + c3 + d3,其中1<a, b, c, d ≤N。
输入
正整数N (N≤100)
输出
每行输出一个完美立方,按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则依次按照b、c、d进行非降升序排列输出,即b值小的先输出、然后c值小的先输出、然后d值小的先输出。
样例输入
24
样例输出
Cube = 6, Triple = (3,4,5)
Cube = 12, Triple = (6,8,10)
Cube = 18, Triple = (2,12,16)
Cube = 18, Triple = (9,12,15)
Cube = 19, Triple = (3,10,18)
Cube = 20, Triple = (7,14,17)
Cube = 24, Triple = (12,16,20)
#include <stdio.h>
#include <math.h>
void Cube(int n);
int main()
{
int N,m;
scanf("%d",&N);//读入数据范围
for(m=1;m<=N;m++)
{
Cube(m);
}
return 0;
}
void Cube(int n)//申明Cube函数
{
int i,j,k;
double a,a1,b,c;
a=pow(n,3);//储存n^3的数值
for(i=2;i<n;i++)
{
b=pow(i,3);//在此处计算i^3的值可使下面的循环减少n^2个计算该项的次数,大量节省时间
for(j=i;j<n;j++)
{
c=pow(j,3);//同理此处可节省n次计算j^3的次数
for(k=j;k<n;k++)
{
a1=b+c+pow(k,3);
if(a1==a)
printf("Cube = %d, Triple = (%d,%d,%d)\n",n,i,j,k);//若判断相同则输出
}
}
}
}
程序完善过程中使用了二叉树的结构思想,在计算过程中有三个计算循环,首先假设计算6以内的循环次数,那么就需要计算2,3,4,5,6五组对应数据,例如当n=6时,i的取值可以从2~5,j,k,同理,那么就有数据重复,例如(3,4,5)(4,3,5)等,实际为同一组数据,要使输出的数据仅为从小到大排列的那组,那么通过二叉树结构的分析可以知道,当j从i起始,k从j起始时,数据可以按要求输出。
- 刷题第一天:南邮NOJ完美立方
- NOJ -1007 完美立方
- 【NOJ】(Java)完美立方
- 刷题第一天:南邮NOJ求最大数
- 南邮 OJ 1007 完美立方
- 刷题第一天:南邮NOJ斐波那契数列
- 完美立方
- 完美立方
- 完美立方
- 完美立方
- 完美立方
- 完美立方
- 完美立方
- 完美立方
- 南邮ACM 1007 完美立方 JAVA解法
- 【C++】完美立方数
- 1007完美立方
- POJ2810完美立方
- smarty模板引擎_7-自定义函数
- c#---List共享空间的情况
- wrap_content和match_parent/fill_parent
- MFC-文件对话框
- 单例模式-java描述
- 刷题第一天:南邮NOJ完美立方
- PHP 请求转发(CURL)
- Storm在zookeeper上的目录结构
- 18--26 面向对象程序设计25(继承的三种方式)
- 虚拟游戏世界实体分析
- 日有所长.3 sprite裁剪
- Intent
- 八数码问题有解的条件及其推广
- redis 和 common pool Java Jar 下载地址