S5來襲4/11旗艦上市新手>新婚族選績優龍頭股 輕忽小中風,當心變殘障籌400萬醫藥費 俞嫻...
2012-04-13 17:20:47 人氣(377) | 回應(0) | 推薦(0) | 收藏(0) 上一篇 | 下一篇

[UVA][Math] 11428 - Cubes

0
收藏
0
推薦

Problem B
Cubes
Input: Standard Input

Output: Standard Output

 

 

Given a positive integer N you will have to find two positive integers x and y such that:

 

 

Input

The input file contains at most 10o lines of inputs. Each line contains a positive integer N (0<N≤10000). Input is terminated by a line containing a single zero. This line should not be processed.

 

Output

For each line of input produce one or more lines of output. Each of these lines contains two positive integers x, y separated by a single space, such that. If there is no such integer values of x and y then produce the line “No solution” instead. If there is more than one solution then output the one with smallest value of y.

 

Sample Input                           Output for Sample Input

7

37

12

0

 

2 1

4 3

No solution

 


Problemsetter: Shahriar Manzoor

Special Thanks: Derek Kisman


做法 : 建表
很明顯的會發現 59^3 - 58^3 已經是極限了,
而如果 x 的範圍再大的話, 則 y 不管怎樣, 都會超出範圍

#include <stdio.h>

int main() {
    int i, j;
    int x[10001], y[10001];
    int hasAns[10001] = {};
    for(i = 2; i <= 60; i++) {
        for(j = i-1; j >= 1; j--) {
            if(i*i*i - j*j*j <= 10000 && hasAns[i*i*i - j*j*j] == 0) {
                hasAns[i*i*i - j*j*j] = 1;
                x[i*i*i - j*j*j] = i;
                y[i*i*i - j*j*j] = j;
            }
        }
    }
    int n;
    while(scanf("%d", &n) == 1 && n) {
        if(hasAns[n])
            printf("%d %d\n", x[n], y[n]);
        else
            puts("No solution");
    }
    return 0;
}

11428Cubes
台長:Morris
人氣(377) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: UVA |
此分類下一篇:[UVA][DP] 12063 - Zeros and Ones
此分類上一篇:[UVA][SPFA&DP][C++] 11813 - Shopping

我要回應
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入以下數字 (ex:123)

(有*為必填)
詳全文