题目
求n个互不相同的数,满足其和为其lcm。
我们把lcm看成一个线段,分割成长度不同的n份。
当然分法有很多,我们只需要构造一个好想好写的。
先分成两个二分之一,取其中一个二分之一再分成1/3和2/3,接下来每次取1/3的分成1/3和2/3。
1
1/2 1/2
1/2 2/6 1/6
1/2 2/6 2/18 1/18
最短的是1/18的这份,我们让它为1。则可算出其它的长度:9 6 2 1。
所以1,2为最短的两个,接下来每个数就是前面的数的和的两倍,最后一个数是前面所有的数之和。
再长一点:1 2 6 18 54 81
可以发现,前面两个数是1,2,接下来是前面一个数的3倍,最后一个数是3的n-2次方。
令$a[0]=1,a[i]=2*3^{i-1}$,答案就是a[0]到a[n-2],a[n-1]/2。
用java的大整数类写起来比较精简。

import java.io.*;
import java.math.*;
import java.util.*;
public class Main{
//a[i]=1 2 6 18 54 162
static BigInteger a[]=new BigInteger[250];
public static void main(String[] args){
Scanner cin= new Scanner(System.in);
a[0]=BigInteger.valueOf(1);
a[1]=BigInteger.valueOf(2);
for(int i=2;i<=200;i++)
a[i]=a[i-1].multiply(BigInteger.valueOf(3));
int t=cin.nextInt();
for(int i=1;i<=t;i++){
int n=cin.nextInt();
if(n==2)System.out.println(-1);
else{
for(int j=0;j<n-1;j++)
System.out.println(a[j]);
System.out.println(a[n-1].divide(BigInteger.valueOf(2)));
}
}
}
}

  

最新文章

  1. [3D跑酷] GameManager
  2. windows下重新安装TCP/IP协议栈
  3. 获取本机外网IP的方式笔记
  4. php 微信3 自定义菜单
  5. 2017年PHP培训机构排名
  6. python视频教程全集
  7. Redis中5种数据结构的使用场景
  8. AspNetCore.AsyncInitialization库源码分析
  9. SQL SERVER 2008 服务器登录名、角色、数据库用户、角色、架构的关系
  10. springboot集成mybatis源码分析(一)
  11. [BZOJ3011][Usaco2012 Dec]Running Away From the Barn
  12. [01] JSP的基本认识
  13. 【转载】 了解实时媒体的播放(RTP/RTCP 和 RTSP)
  14. 对于某些浏览器不支持placeholder的解决办法
  15. Acdream1311_Apple
  16. C/C++互相调用
  17. vue使用路由判断是否登录
  18. poj2826 An Easy Problem?!【计算几何】
  19. 条件编译#ifdef的妙用详解
  20. 20145335郝昊 Java学习心得 密码学代码复写

热门文章

  1. Activity 与 Service 之间的消息传递
  2. JQuery阻止事件冒泡---阻止后续代码执行
  3. DEDECMS之七 如何实现文章推荐排行榜
  4. NET Core中怎么使用HttpContext.Current
  5. Number of Digit One
  6. iOS视频录制、压缩导出、取帧等http://www.jianshu.com/p/6f23f608048e
  7. http缓存提高性能
  8. 【位运算经典应用】 N皇后问题
  9. .net异步编程
  10. vNext之旅(1):从概念和基础开始