zoukankan      html  css  js  c++  java
  • POJ 1543 Perfect Cubes

    Perfect Cubes
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 12595   Accepted: 6707

    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)
    题目大意:给定一个数n,三个数a,b,c大于1,问n以内有多少个数字满足n^3 = a^3 + b^3 + c^3。
    #include <stdio.h>
    #include <iostream>
    #include <string.h>
    using namespace std;
    
    int ans[5];
    int visted[200];
    int selected[200];
    
    
    void DFS(int n, int index)
    {
        if (index == 3)
        {
            if (n * n * n == ans[0] * ans[0] * ans[0] + ans[1] * ans[1] * ans[1] + ans[2] * ans[2] * ans[2] && selected[ans[0]] * selected[ans[1]] * selected[ans[2]] == 0)
            {
                printf("Cube = %d, Triple = (%d,%d,%d)
    ", n, ans[0], ans[1], ans[2]);
                selected[ans[0]] = selected[ans[1]] = selected[ans[2]] = 1;
            }
            return;
        }
        for (int i = 2; i < n; i++)
        {
            if (!visted[i])
            {
                visted[i] = 1;
                ans[index] = i;
                DFS(n, index + 1);
                visted[i] = 0;
            }
        }
    }
    
    int main()
    {
        int n;
        scanf("%d", &n);
        for (int i = 6; i <= n; i++)
        {
            memset(visted, 0, sizeof(visted));
            memset(selected, 0, sizeof(selected));
            DFS(i, 0);
        }
        return 0;
    }
  • 相关阅读:
    对于指定区块div,如何区分区块内的点击 和 区块外的点击?
    broadcom代码中httpd进程启动流程介绍
    一个简单的搜索布局样式
    一种在视频OBJECT标签上放置均分四个区域的框选方法
    JQuery执行DOM批量克隆并插入的提效方法
    DevOps技术路线图
    后端开发技术路线图
    Angular route传参
    Angular使用echarts
    TypeScript Array Remove
  • 原文地址:https://www.cnblogs.com/lzmfywz/p/3200179.html
Copyright © 2011-2022 走看看