cf C. Arithmetic Progression
http://codeforces.com/contest/382/problem/C
题意:给你n个数,然后让你添加一个数使得n+1个数能形成这样的规律,a[1]-a[0]=a[2]-a[1]=a[3]-a[2].....,问这样的数有多少个?输出出来。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#define maxn 100001
using namespace std; int n;
int a[maxn];
int b[maxn]; int main()
{
while(scanf("%d",&n)!=EOF)
{
map<int,int>q;
int cnt=;
for(int i=; i<n; i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
if(n==)
{
printf("-1\n");
continue;
}
if(n==)
{
if((a[]+a[])%==)
{
int m=(a[]+a[])/-a[];
if((a[]+a[])/==a[])
{
printf("1\n");
printf("%d\n",a[]);
continue;
}
printf("%d\n",);
printf("%d %d %d\n",a[]-(a[]-a[]),a[]+m,a[]+m*);
}
else
{
printf("%d\n",);
int m=a[]-a[];
printf("%d %d\n",a[]-m,a[]+m);
}
continue;
}
if(n==)
{
int m1=a[]-a[];
int m2=a[]-a[];
if(m1>m2)
{
if(m1==m2*)
{
printf("%d\n",);
printf("%d\n",a[]+m2);
}
else
{
printf("0\n");
}
}
else if(m1<m2)
{
if(m2==m1*)
{
printf("%d\n",);
printf("%d\n",a[]+m1);
}
else
{
printf("0\n");
}
}
else if(m1==m2)
{
if(a[]==a[])
{
printf("1\n");
printf("%d\n",a[]);
continue;
}
printf("2\n");
printf("%d %d\n",a[]-m1,a[n-]+m1);
}
continue;
}
int k;
int max1=;
bool flag1=true;
for(int i=; i<n; i++)
{
int m=a[i]-a[i-];
if(m==)
{
flag1=false;
}
if(q[m]==)
{
q[m]=;
}
else
q[m]++;
if(q[m]>max1)
{
max1=q[m];
k=m;
}
}
if(!flag1)
{
if(k!=)
{
printf("0\n");
continue;
}
}
if(k==)
{
bool flag=true;
for(int i=; i<n; i++)
{
if(a[i]-a[i-]!=k)
{
flag=false;
printf("0\n");
break;
}
}
if(flag==true)
{
printf("1\n");
printf("%d\n",a[]);
}
}
else
{
int f=;
for(int i=; i<n; i++)
{
if(a[i]-a[i-]!=k)
{
if(f==)
{
f=;
printf("0\n");
break;
}
else if(f==)
{
f=;
if((a[i]+a[i-])%!=)
{
printf("0\n");
f=;
break;
}
else
{
if((a[i]+a[i-])/==a[i-]+k)
b[cnt++]=(a[i]+a[i-])/;
else
{
f=;
printf("0\n");
break;
}
}
}
}
}
if(f==)
{
b[cnt++]=a[]-k;
b[cnt++]=a[n-]+k;
}
if(f==) continue;
sort(b,b+cnt);
printf("%d\n",cnt);
for(int i=; i<cnt; i++)
{
if(i==)
printf("%d",b[i]);
else printf(" %d",b[i]);
}
printf("\n");
}
}
}
cf C. Arithmetic Progression的更多相关文章
- CF 1114 E. Arithmetic Progression
E. Arithmetic Progression 链接 题意: 交互题. 有一个等差序列,现已打乱顺序,最多询问60次来确定首项和公差.每次可以询问是否有严格大于x的数,和查看一个位置的数. 分析: ...
- POJ3495 Bitwise XOR of Arithmetic Progression
Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 772 Accepted: 175 Description Write ...
- CF刷题-Codeforces Round #481-D. Almost Arithmetic Progression
题目链接:https://codeforces.com/contest/978/problem/D 题解: 题目的大意就是:这组序列能否组成等差数列?一旦构成等差数列,等差数列的公差必定确定,而且,对 ...
- Dirichlet's Theorem on Arithmetic Progression
poj3006 Dirichlet's Theorem on Arithmetic Progressions 很显然这是一题有关于素数的题目. 注意数据的范围,爆搜超时无误. 这里要用到筛选法求素数. ...
- CF1114E Arithmetic Progression(交互题,二分,随机算法)
既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...
- Find Missing Term in Arithmetic Progression 等差数列缺失项
查找等差数列中的缺失项. e.g.Input: arr[] = {2, 4, 8, 10, 12, 14} Output: 6 Input: arr[] = {1, 6, 11, 16, 21, 31 ...
- BestCoder22 1002.NPY and arithmetic progression(hdu 5143) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5143 题目意思:给出 1, 2, 3, 4 的数量,分别为a1, a2, a3, a4,问是否在每个数 ...
- codeforces C. Arithmetic Progression 解题报告
题目链接:http://codeforces.com/problemset/problem/382/C 题目意思:给定一个序列,问是否可以通过只插入一个数来使得整个序列成为等差数列,求出总共有多少可能 ...
- CF 567C Geometric Progression
题目大意:输入两个整数 n 和 k ,接下来输入n个整数组成的序列.求该序列中三个数 满足条件的子串个数(要求字串由三个整数a,b,c组成,其中 c = k * b = k * k * a). 思路: ...
随机推荐
- Android如何创建背景透明的Dialog
一:控制Dialog 的背景方法:1.定义一个无背景主题主题<!--去掉背景Dialog--> <style name="NobackDialog" parent ...
- ArrayBlockingQueue 源码阅读 问题(一)
今天阅读java.util.concurrent 中 ArrayBlockingQueue 的源码,发现其中有很多下面这行代码 final ReentrantLock lock = this.lock ...
- 11.2 morning
noip模拟题day1——棋盘上的问题 day1模拟题 By FancyCoder总览(Overview)注意事项:共3道题目,时间2.5小时.Pascal选手允许使用math库和ansistring ...
- c# 操作.config中AppSettings配置节
ConfigurationSettings.AppSettings[key].ToString(); 这种方式很眼熟吧? 不过这种方式基本过时了,虽然还能用. 微软建议采用ConfigurationM ...
- Android-自定义多TAB悬浮控件实现蘑菇街首页效果
因为项目的一些需求需要用到此种展现方式. 找了市面上大部分有类似功能的应用. 基本思路嵌套ScrollView 转换事件分发给listview 实现. 但是此种方案有个缺点. 在ScrollVie ...
- SQL server抽疯后修改sa密码无法成功的处理办法
今天上班打开电脑,发现尼玛所有项目启动后都报错,原因是说数据库sa的验证错误,无法进行数据库链接等等东西,简单地说---SQL server抽疯了!!!:( 昨天还好好的.而且没有修改过东西.为啥会出 ...
- 解决kernel headers报错
Make sure you have updated version $ sudo apt-get update Search for kernel version (optional) $ apt- ...
- MyEclipse起步Tomcat报错“A configuration error occurred during…” MyEclipse起步Tomcat报错“A configuration error occurred during…”
- xargs rm -rf 与 -exec rm
# find ./ -exec rm {} \; # find ./ | xargs rm -rf 两者都可以把find命令查找到的结果删除,其区别简单的说是前者是把find发现的结果一次性传给exe ...
- paramiko SSH 模块简单应用。
目的:需要ssh链接到Linux主机,执行telnet 命令,抓回显匹配制定内容. ssh --->执行telnet到本地端口--->执行类似 ls 的命令.匹配命令执行后的特定回显字段. ...