Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 12595 | Accepted: 6707 |
Description
Input
Output
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", 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; }