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): 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.
 

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
 
/*
思路:
一个倒数可以分解问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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值