传送门:http://codeforces.com/contest/1081/problem/E

E. Missing Numbers

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Chouti is working on a strange math problem.

There was a sequence of nn positive integers x1,x2,…,xnx1,x2,…,xn, where nn is even. The sequence was very special, namely for every integer ttfrom 11 to nn, x1+x2+...+xtx1+x2+...+xt is a square of some integer number (that is, a perfect square).

Somehow, the numbers with odd indexes turned to be missing, so he is only aware of numbers on even positions, i.e. x2,x4,x6,…,xnx2,x4,x6,…,xn. The task for him is to restore the original sequence. Again, it's your turn to help him.

The problem setter might make mistakes, so there can be no possible sequence at all. If there are several possible sequences, you can output any.

Input

The first line contains an even number nn (2≤n≤1052≤n≤105).

The second line contains n2n2 positive integers x2,x4,…,xnx2,x4,…,xn (1≤xi≤2⋅1051≤xi≤2⋅105).

Output

If there are no possible sequence, print "No".

Otherwise, print "Yes" and then nn positive integers x1,x2,…,xnx1,x2,…,xn (1≤xi≤10131≤xi≤1013), where x2,x4,…,xnx2,x4,…,xn should be same as in input data. If there are multiple answers, print any.

Note, that the limit for xixi is larger than for input data. It can be proved that in case there is an answer, there must be a possible sequence satisfying 1≤xi≤10131≤xi≤1013.

Examples
input

Copy
6
5 11 44
output

Copy
Yes
4 5 16 11 64 44
input

Copy
2
9900
output

Copy
Yes
100 9900
input

Copy
6
314 1592 6535
output

Copy
No
Note

In the first example

  • x1=4x1=4
  • x1+x2=9x1+x2=9
  • x1+x2+x3=25x1+x2+x3=25
  • x1+x2+x3+x4=36x1+x2+x3+x4=36
  • x1+x2+x3+x4+x5=100x1+x2+x3+x4+x5=100
  • x1+x2+x3+x4+x5+x6=144x1+x2+x3+x4+x5+x6=144

All these numbers are perfect squares.

In the second example, x1=100x1=100, x1+x2=10000x1+x2=10000. They are all perfect squares. There're other answers possible. For example, x1=22500x1=22500 is another answer.

In the third example, it is possible to show, that no such sequence exists.

题意概括:

给出 N/2 个 偶数位的数,需要补充剩余 N/2 个奇数位的数,使得 每一位的前缀和都是完全平方数。

如果存在解,按顺序输出 N 个完整数字。

解题思路:

从第一位开始构造前缀和,如果按照实际的数的范围去枚举 x(1e13)肯定会爆炸,那么就折半枚举√x,判断当前前缀和 Si 是否为完全平方数,

如果是则记录下来,并且从 √Si + 1开始枚举求解下一个前缀和。

如果超过的 √Smax ,说明无解。

AC code:

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#define INF 0x3f3f3f3f
#define LL long long
using namespace std; const int MAXN = 1e5+;
const LL MAXW = ; LL b[MAXN], a[MAXN]; bool check(LL x)
{
LL y = sqrt(x);
if(y*y == x) return true;
return false;
} int main()
{
int N;
LL sum = ;
scanf("%d", &N);
for(int i = ; i <= N/; i++){
scanf("%I64d", &a[i]);
} LL tmp = 1LL;
while(!check(tmp*tmp+a[])){
tmp++;
if(tmp >= MAXW){
puts("No");
return ;
}
}
b[] = tmp*tmp;
b[] = a[];
int cnt = ;
tmp = sqrt(tmp*tmp+a[]); for(int i = ; i <= N/; i++){
if(tmp >= MAXW){
puts("No");
return ;
}
sum = tmp;
tmp++;
while(!check(tmp*tmp+a[i])){
tmp++;
if(tmp >= MAXW){
puts("No");
return ;
}
}
b[++cnt] = tmp*tmp - sum*sum;
b[++cnt] = a[i];
tmp = sqrt(tmp*tmp + a[i]);
printf("a:%I64d tmp:%I64d\n",a[i], tmp);
}
puts("Yes");
for(int i = ; i <= cnt; i++)
printf("%I64d ", b[i]); return ;
}

Avito Cool Challenge 2018 E. Missing Numbers 【枚举】的更多相关文章

  1. Avito Cool Challenge 2018 :E. Missing Numbers

    E. Missing Numbers 题目链接:https://codeforces.com/contest/1081/problem/E 题意: 现在有n个数(n为偶数),但只给出a2,a4.... ...

  2. Codeforces Avito Code Challenge 2018 D. Bookshelves

    Codeforces Avito Code Challenge 2018 D. Bookshelves 题目连接: http://codeforces.com/contest/981/problem/ ...

  3. Avito Cool Challenge 2018

    考挂了.. A - Definite Game 直接看代码吧. #include<cstdio> #include<cstring> #include<algorithm ...

  4. Avito Cool Challenge 2018(div1+2)

    A. Definite Game: 题意:输入N,输出最小的结果N-x,其中x不少N的因子. 思路:N=2时,输出2:其他情况输出1:因为N>2时,N-1不会是N的因子. #include< ...

  5. Avito Cool Challenge 2018 Solution

    A. Definite Game 签. #include <bits/stdc++.h> using namespace std; int main() { int a; while (s ...

  6. Avito Cool Challenge 2018 自闭记

    A:n==2?2:1. #include<iostream> #include<cstdio> #include<cmath> #include<cstdli ...

  7. Avito Code Challenge 2018 C

    C. Useful Decomposition time limit per test 1 second memory limit per test 256 megabytes input stand ...

  8. Avito Code Challenge 2018 A~E

    A. Antipalindrome 还以为是什么神dp结果就是分情况讨论啊 原串是一串一样的字符的话输出0,是回文串的话输出n-1,否则直接输出原串长度 #include<iostream> ...

  9. cf掉分记——Avito Code Challenge 2018

    再次作死的打了一次cf的修仙比赛感觉有点迷.. 还好掉的分不多(原本就太低没法掉了QAQ) 把会做的前三道水题记录在这.. A: Antipalindrome emmmm...直接暴力枚举 code: ...

随机推荐

  1. EveryThing 使用方法

    1.按照时间范围:datetimed: <*.doc|*.docx>  dm:1/2015-6/2015// 如果本地的时间设置是年份在前,那么把年份放在月份前面// d: <*.d ...

  2. mybatis学习之分页

    分页一般分为物理分页:先查询所有值再分页输出,逻辑分页:直接分页查询输出,mybatis支持物理分页,如下: 1.物理分页: mapper映射: <select id="findStu ...

  3. Azure Java Libraries 入门

    本指南演示了以下 Azure Java Libraries 的用法,包括设置认证.创建并使用 Azure 存储.创建并使用 Azure SQL 数据库.部署虚拟机.从 GitHub 部署 Azure ...

  4. python中的单例模式的应用

    1 使用__new__方法 class Singleton(object):    def __new__(cls, *args, **kw):        if not hasattr(cls, ...

  5. SSH框架整合中Hibernate实现Dao层常用结构

    一.疑惑 一直以来,我在使用SSH框架的时候经常会发现后者有疑虑到底使用hibernate的那种方法或者如何配置hibernate来操作数据库,经过 一段时间的学习下面我来总结一下,常用的dao层配置 ...

  6. Vue-resource和Axios对比以及Vue-axios

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios. vue-resource特点 vue-resource插件具有以下特点: 1,体积小 vue-resour ...

  7. java unsupported major.minor version 51.0 解决

    1.概述 出现如题所述异常 是因为jdk高版本 编译后的class文件 运行在低版本的jre环境下(如jdk7编译 运行在jdk6环境下) 2. 解决方案 在eclipse等ide中重新编译 指定编译 ...

  8. 139.00.003 Git学习-Git时光机之Inbox体系(三)

    一.Git时光机之Inbox 体系 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有G ...

  9. 二十、滑动开关css

    如上图所示的图片,如何通过css实现呢? 下面咱们慢慢尝试: html: <div class="togglePosition"> <label class=&q ...

  10. B+/-Tree原理(mysql索引数据结构)

    B+/-Tree原理 B-Tree介绍 B-Tree是一种多路搜索树(并不是二叉的):       1.定义任意非叶子结点最多只有M个儿子:且M>2:       2.根结点的儿子数为[2, M ...