题目链接:

pid=5334">点击打开链接

题目大意:给出一个数字k,要求做出一个长度小于等于10^5的序列。该序列中不同样的连续子序列有k个。

构造啊,。,,,,一点辙都没有

使用连续的数字做成序列,能够省事的计算出不同样的子序列有多少个。

使用n个1,那么不同样子序列有n种。

使用n个1和m个2,那么不同样的子序列有n+m+n*m种。

使用n个1,m个2和l个3,那么不同样的子序列有n+m+l+n*m+n*l+m*l种。

当k小于等于10^5时。直接输出k个1。

当k大于10^5时。对于使用1,2,3的情况能够做出满足各种k的子序列。

那么我们要求的就是求出n。m。l的值,

令a = n+l+1 , b = m+l+1 , c = l ; 得到a,b是为了凑出n+m+l+n*m+n*l+m*l,终于a*b = k + c*c + c + 1

枚举c。求k+c*c+c+1的全部约数。看是否有a和b满足a = n+l+1 , b = m+l+1 , c = l 而且n+m+l <= 10^5

假设存在了就输出连续的n个1,m个2,l个3.

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
#define LL __int64
int main() {
LL k , a , b , c ;
LL i , j , l , flag ;
while( scanf("%I64d", &k) != EOF ) {
if( k <= 100000 ) {
printf("%I64d\n", k) ;
for(i = 1 ; i < k ; i++)
printf("1 ") ;
printf("1\n") ;
continue ;
}
l = flag = 0 ;
while( 1 ) {
c = k+l*l+l+1 ;
for(j = l+1 ; j*j <= c ; j++) {
a = j ;
if( c%a ) continue ;
b = c/a ;
if( b < l+1 ) continue ;
if( a-l-1+b-l-1+l <= 100000 ) {
flag = 1 ;
break ;
}
}
if( flag ) break ;
l++ ;
}
printf("%I64d\n", a+b-l-2) ;
for(i = 0 ; i < a+b-l-2 ; i++) {
if( i < a-l-1 )
printf("1") ;
else if( i < a+b-2*l-2 )
printf("2") ;
else
printf("3") ;
if( i == a+b-l-3 ) printf("\n") ;
else printf(" ") ;
}
}
return 0 ;
}

hdu5334(2015多校4)--Virtual Participation(构造)的更多相关文章

  1. 2015 多校联赛 ——HDU5302(构造)

    Connect the Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  2. 2015 多校联赛 ——HDU5353(构造)

    Each soda has some candies in their hand. And they want to make the number of candies the same by do ...

  3. hdu5301(2015多校2)--Buildings(构造)

    Buildings Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  4. 2015 多校联赛 ——HDU5334(构造)

    Virtual Participation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  5. 2015 Multi-University Training Contest 4 hdu 5334 Virtual Participation

    Virtual Participation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  6. hdu 5288||2015多校联合第一场1001题

    pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...

  7. hdu5379||2015多校联合第7场1011 树形统计

    pid=5379">http://acm.hdu.edu.cn/showproblem.php? pid=5379 Problem Description Little sun is ...

  8. 记人生中第一场认真打的CF——CF1000(虽然是Virtual participation)

    老师说下午要让我们(来自开明的新高一同学)感受一下CF,于是下午2:20我们就集中到了机房.老师教我们用Educational Codeforces Round 46 (Rated for Div. ...

  9. 2015多校联合训练赛 hdu 5308 I Wanna Become A 24-Point Master 2015 Multi-University Training Contest 2 构造题

    I Wanna Become A 24-Point Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 ...

随机推荐

  1. DELPHI MAKEWORD的用法

    WORD MAKEWORD(    BYTE bLow,  // low-order byte of short value    BYTE bHigh  // high-order byte of ...

  2. 利用JS实现在li中添加或删除class属性

    $( function() { $("#test li").click(function(){ $("#test li").removeClass(" ...

  3. elasticsearch term 查询之一

    1.前言 term级别查询将按照存储在倒排索引中的确切字词进行操作,这些查询通常用于数字,日期和枚举等结构化数据,而不是全文本字段. 或者,它们允许您制作低级查询,并在分析过程之前进行. term级别 ...

  4. 设置Spark日志级别

    编辑Spark中conf中配置文件log4j.properties 设置日志级别为WARN,即:log4j.rootCategory=WARN, console

  5. 小米miui系统怎么关闭文件管理里的热门视频和表情?

    小米miui系统怎么关闭文件管理里的热门视频和表情? 打开"文件管理"后,切换到"手机"选项卡. 然后,点击屏幕右上角的一排竖点. . 在弹出的菜单中点击&qu ...

  6. 初识 Java

    1.Java中的数据类型 Java 语言是一种强类型语言.通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型. Java 中有两类数据类型: 在 Java 的领域里,基 ...

  7. 在ubuntu10.04 下将360wifi当无线网卡使用

    通过百度“360wifi linux“ 已经有很多解决方案.主要过程是从网上下载mt7601驱动包,编译出一个内核模块后,再通过modprobe 添加模块.下面描述的是基于我本机的特点所做的额外工作. ...

  8. Ubuntu——修正LibreOffice中文乱码以及eclipse提示框颜色

    刚进ubuntu的时候就老遇到用libreoffice打开某些文档时出现一堆叠在一起的乱码.以及最開始使用eclipse编辑时,鼠标放到一个变量或者函数时 弹出来一黑框框-看的难受的.... 这里记录 ...

  9. C-printf/sprintf/snprintf中的类型转换详解

    源码1 #include <stdio.h> void f1() { double x = -5.5625; printf("%d\n",x); //输出为0,为什么? ...

  10. Lomboz插件的介绍 下载 安装 问题

    http://www.blogjava.net/javaandcc/articles/251334.html Lomboz是Eclipse的一个主要的开源插件(open-source plug-in) ...