当前位置:编程学习 > C/C++ >>

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

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 6
2 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个数  以此类推即可
 
手算  我没有写程序
[cpp] 
#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; 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,