POJ 1543 完美立方——基础枚举

来源:互联网 发布:在matlab中数组赋值 编辑:程序博客网 时间:2024/04/28 09:41

                                                                 题目传送门:http://poj.org/problem?id=1543

完美立方:a^3=b^3+c^3+d^3

解题思路:a最小为6,为避免对立方的重复计算,先用一个数组把立方存起来,然后再对四元组进行判断

b,c,d为不同的整数,且都小于a

#include <stdio.h>#include <math.h>int main(){    int n,a,b,c,d;    long int cube[101];    while(scanf("%d",&n)!=EOF)    {        for(int  i=1; i<=n; i++)        {            cube[i]=i*i*i;        }        for(a=6; a<=n; a++)            for(b=2; b<a-1; b++)            {                if(cube[a]<cube[b]+cube[b+1]+cube[b+2])                    break;                for(c=b+1; c<a; c++)                {                    if(cube[a]<cube[b]+cube[c]+cube[c+1])                        break;                    for(d=c+1; d<a; d++)                        if(cube[a]==cube[b]+cube[c]+cube[d])                            printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);                }            }    }    return 0;}


原创粉丝点击