zoukankan      html  css  js  c++  java
  • poj 1543 Perfect Cubes(注意剪枝)

    Perfect Cubes
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 14901   Accepted: 7804

    Description

    For hundreds of years Fermat's Last Theorem, which stated simply that for n > 2 there exist no integers a, b, c > 1 such that a^n = b^n + c^n, has remained elusively unproven. (A recent proof is believed to be correct, though it is still undergoing scrutiny.) It is possible, however, to find integers greater than 1 that satisfy the "perfect cube" equation a^3 = b^3 + c^3 + d^3 (e.g. a quick calculation will show that the equation 12^3 = 6^3 + 8^3 + 10^3 is indeed true). This problem requires that you write a program to find all sets of numbers {a,b,c,d} which satisfy this equation for a <= N.

    Input

    One integer N (N <= 100).

    Output

    The output should be listed as shown below, one perfect cube per line, in non-decreasing order of a (i.e. the lines should be sorted by their a values). The values of b, c, and d should also be listed in non-decreasing order on the line itself. There do exist several values of a which can be produced from multiple distinct sets of b, c, and d triples. In these cases, the triples with the smaller b values should be listed first.

    Sample Input

    24

    Sample Output

    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)

    题意:找出2到n中,所有满足a^3=b^3+c^3+d^3的a,b,c,d的数
    #include<stdio.h>
    #include<string.h>
    #include<cstdio> 
    #include<string>
    #include<math.h>
    #include<algorithm>
    #define LL long long
    #define PI atan(1.0)*4
    #define DD double
    #define MAX 2002000
    #define mod 100
    #define dian 1.000000011
    #define INF 0x3f3f3f
    using namespace std;
    int main()
    {
        int n,m,j,i,t,k,l;
        int vis[1000];
        int a[150];
        while(scanf("%d",&n)!=EOF)
        {
        	for(i=1;i<=n;i++)
        	a[i]=pow(i,3);
        	for(i=6;i<=n;i++)
        	{
        		memset(vis,0,sizeof(vis));
        		for(j=2;j<i;j++)
        		{    
    			    if(a[i]<a[j]+a[j+1]+a[j+2])
    				    break;		
        			for(k=j;k<i;k++)
        			{   
    				    if(a[i]<a[j]+a[k]+a[k+1]) break;								
        				for(l=k;l<i;l++)
        				{
        					if(a[i]==a[j]+a[k]+a[l])
        					{
        						printf("Cube = %d, Triple = (%d,%d,%d)
    ",i,j,k,l);
        					}
        				}
        			}
        		}
        	}
        }
    	return 0;
    }
    

      

  • 相关阅读:
    csu 1503: 点弧之间的距离-湖南省第十届大学生计算机程序设计大赛
    Android MediaPlayer 和 NativePlayer 播放格式控制
    国内互联网企业奇妙招数
    [Oracle] Insert All神奇
    代码杂记
    R.layout.main connot be resolved 和R.java消失
    计算机安全篇(1)
    深入浅出谈开窗函数(一)
    PHP JSON_ENCODE 不转义中文汉字的方法
    c#indexof使用方法
  • 原文地址:https://www.cnblogs.com/tonghao/p/5292583.html
Copyright © 2011-2022 走看看