To Be NUMBER ONE
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 408 Accepted Submission(s): 207
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.
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.
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/* 思路: 一个倒数可以分解问2个数的倒数之和 1/n= 1/(a*b)=1/a*(a+b) + 1/b*(a+b) */ #include<iostream> #include<cmath> using namespace std ; int main(void) { int a[100] ,cnt = 0 ; a[0] = 2 ; a[1] = 3 ; a[2] = 6 ; int k = 3 ; while(cnt < 16) { int i ; for( i = 0 ; i < cnt + 2 ; i ++) cout<<a[i]<<" "; cout<<a[cnt+2]<<endl; int j ,flag = 0 ; for( i = 0 ; i < cnt + 3 ; i ++){ for( j = 2 ; j <= a[i] ; j ++) { if(a[i] % j == 0 ) { int b , c , d , tag = 0 , tag1 = 0 ; d = a[i] / j ; b = j*( j + d) ; c = d * ( j + d ) ; if(!(b<=(k+1)*(k+1) && c <=(k+1)*(k+1))) continue ; for(int l = 0 ; l < k ; l++) if(a[l] == b){ tag = 1; break; } for( l = 0 ; l < k ; l ++) if(a[l] == j){ tag1 = 1; break; } if(tag == 0 || tag == 0) { a[i] = b ; a[k ++] =c ; flag = 1; break; } } } if(flag) break; } cnt ++ ; } return 0; }