传送门: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. js设置下拉框选中后change事件无效解决

    下拉框部分代码: <select id="bigType"> <option value="">请选择</option> & ...

  2. mycat安装

    一.简介 在互联网数据大爆炸时代,对数据处理的要求越来越高,很明显单实例数据库已经不能满足需求了,这时候数据库的中间件便应运而生.中间件聚集多实例来提供更强的处理能力,并且隐藏了多实例产生的复杂性.m ...

  3. 读ios开发有感——建立APP开发体系

    前言:ios开发和现在的大前端.跨端开发在底层上的道理是相通的,因此通过学习ios开发,可以形成对APP开发体系的理解. 一.app开发的知识体系 基础 应用开发 原理 原生与前端 二.基础模块 按照 ...

  4. css以前忽略的一些知识点(知识体系搭建)

    一.选择器 基本选择器: 通用元素选择器 标签选择器 类选择器 id选择器 组合选择器: 多元素组合选择器 后代元素选择器 子代元素选择器 毗邻元素选择器 属性选择器: [title] & P ...

  5. linux awk 使用的一个例子

    1. 场景 从日志中获取漏发奖励的司机id 2. 日志 如下(需要获取一个时间段的 driverIdStr) ::-thread-] order.service.TOrderInfoServiceIm ...

  6. 使用dojo.connect()添加事件的注意事项

    使用dojo.connect()添加事件处理器是很方便的,不用再考虑跨浏览器的问题了.但要想正确地使用这个方法,仍然要注意几个问题:        1.用dojo.byId()获取的是dom元素,而用 ...

  7. Repeat Number(数论)

    Repeat Number 题目描述: Definition: a+b = c, if all the digits of c are same ( c is more than ten), then ...

  8. 第9课 备忘便签-TinyDB

    编写一只个性化的App便签小程序,TinyDB可能会帮上你.   1.组件设计 1)TextBox1输入需要记录存储的信息记录 2)四只button分别作为“添加 编辑 删除清空”信息记录 3)Lli ...

  9. 错误的git reset操作之后的补救措施

    (相关命令:git reset.git log.git reflog,要看文档的话用--help.) 这是一次愚蠢的行为之后的总结……避免我之后忘记了解决方法[逃 get reset --hard是一 ...

  10. python完全学习笔记

    dir(__builtins__) help(input) 'let\'s go'   #转义字符 \ r'c:\now'       #字符串前加r 自动转义 str= ''' shdiufhi s ...