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;
    }
    

      

  • 相关阅读:
    973. K Closest Points to Origin
    919. Complete Binary Tree Inserter
    993. Cousins in Binary Tree
    20. Valid Parentheses
    141. Linked List Cycle
    912. Sort an Array
    各种排序方法总结
    509. Fibonacci Number
    374. Guess Number Higher or Lower
    238. Product of Array Except Self java solutions
  • 原文地址:https://www.cnblogs.com/tonghao/p/5292583.html
Copyright © 2011-2022 走看看