hdu 3816 To Be NUMBER ONE 一道数论 主要是思路

来源:互联网 发布:js单选按钮事件 编辑:程序博客网 时间:2024/06/04 18:18

To Be NUMBER ONE

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 383    Accepted Submission(s): 190
Special Judge


Problem Description
One is an interesting integer. This is also an interesting problem. You are assigned with a simple task.
Find N (3 <= N <= 18) different positive integers Ai (1 <= i <= N), and


Any possible answer will be accepted.
 

Input
No input file.
 

Output
Your program’s output should contain 16 lines:
The first line contain 3 integers which are the answer for N = 3, separated by a single blank.
The following 15 lines are the answer for N = 4 to 18, as the same format.
The sample output is the first two lines of a possible output.
 

Sample Output
2 3 62 4 6 12
 
题意
分别用3到18个数 的倒数相加 等于1   
并且每个数要求 小于等于 个数+1的平方
比如 用3个数 
那么要找3个数满足 这三个数小于等于(3+1)*(3+1) 且倒数之和为1
 
思路:
一个倒数可以分解问2个数的倒数之和 
1/n= 1/(a*b)=1/a*(a+b) + 1/b*(a+b)
 
故 在已知 上层的情况下 可以直接将上一层的数分解为2个数  以此类推即可
 
手算  我没有写程序 
#include<stdio.h>int main(){            printf("2 3 6\n");            printf("2 4 6 12\n");printf("2 5 6 12 20\n");printf("2 5 7 12 20 42\n");printf("3 5 6 7 12 20 42\n");printf("3 5 6 8 12 20 42 56\n");printf("3 5 6 8 16 20 42 48 56\n");printf("3 5 6 12 16 20 24 42 48 56\n");printf("3 5 6 16 20 21 24 28 42 48 56\n");printf("3 5 6 16 21 24 28 36 42 45 48 56\n");printf("3 5 6 16 24 28 30 36 42 45 48 56 70\n");printf("3 5 6 16 28 30 33 36 42 45 48 56 70 88\n");printf("3 5 6 16 28 33 36 39 42 45 48 56 70 88 130\n");printf("3 5 6 16 33 36 39 42 44 45 48 56 70 77 88 130\n");printf("3 5 6 20 33 36 39 42 44 45 48 56 70 77 80 88 130\n");printf("3 5 6 24 33 36 39 42 44 45 48 56 70 77 80 88 120 130\n");return 0;}