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的更多相关文章

  1. CF 1114 E. Arithmetic Progression

    E. Arithmetic Progression 链接 题意: 交互题. 有一个等差序列,现已打乱顺序,最多询问60次来确定首项和公差.每次可以询问是否有严格大于x的数,和查看一个位置的数. 分析: ...

  2. POJ3495 Bitwise XOR of Arithmetic Progression

    Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 772   Accepted: 175 Description Write ...

  3. CF刷题-Codeforces Round #481-D. Almost Arithmetic Progression

    题目链接:https://codeforces.com/contest/978/problem/D 题解: 题目的大意就是:这组序列能否组成等差数列?一旦构成等差数列,等差数列的公差必定确定,而且,对 ...

  4. Dirichlet's Theorem on Arithmetic Progression

    poj3006 Dirichlet's Theorem on Arithmetic Progressions 很显然这是一题有关于素数的题目. 注意数据的范围,爆搜超时无误. 这里要用到筛选法求素数. ...

  5. CF1114E Arithmetic Progression(交互题,二分,随机算法)

    既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...

  6. 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 ...

  7. 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,问是否在每个数 ...

  8. codeforces C. Arithmetic Progression 解题报告

    题目链接:http://codeforces.com/problemset/problem/382/C 题目意思:给定一个序列,问是否可以通过只插入一个数来使得整个序列成为等差数列,求出总共有多少可能 ...

  9. CF 567C Geometric Progression

    题目大意:输入两个整数 n 和 k ,接下来输入n个整数组成的序列.求该序列中三个数 满足条件的子串个数(要求字串由三个整数a,b,c组成,其中 c = k * b = k * k * a). 思路: ...

随机推荐

  1. Linux内核之mmc子系统-sdio

    现在的Linux内核中,mmc不仅是一个驱动,而是一个子系统.这里通过分析Linux3.2.0内核,结合TI的arm335x平台及omap_hsmmcd host分析下mmc子系统,重点关注sdio及 ...

  2. 开始android博客分享

    现在开始写博客,分享android开发中的心得.

  3. LDAP7卸载

    3 Uninstalling Directory Server Enterprise Edition This chapter provides instructions for uninstalli ...

  4. oracle查看死锁和处理方法

    在操作数据库中经常会遇到表死锁问题,特别是不良的数据库设计和操作的时候,更容易遇到死锁问题.今天在系统中往oracle中添加数据时,特意快速多点几次添加的时候,就出现了死锁问题,而且刚好在读取和更新表 ...

  5. log4j中Spring控制台输出Debug级信息过多解决方法

    log4j中Spring控制台输出Debug级信息过多解决方法 >>>>>>>>>>>>>>>>> ...

  6. codevs 1817 灾后重建

    /* 暴力暴力 离线每次添边 堆优化dij 70 SPFA 80..... */ #include<iostream> #include<cstdio> #include< ...

  7. linux常用命令之ln

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...

  8. [转]单例模式与静态变量在PHP中

    在PHP中,没有普遍意义上的静态变量.与Java.C++不同,PHP中的静态变量的存活周期仅仅是每次PHP的会话周期,所以注定了不会有Java或者C++那种静态变量. 所以,在PHP中,静态变量的存在 ...

  9. cocos2d-x学习之类型转换(转)

    在做数据转换时,最好包含以下头文件 #include <iostream> #include <cmath> #include <string> #include  ...

  10. JavaScript中style.left与offsetLeft的区别

    今天在制作焦点轮播图的时候,遇到一个问题,在使用style.left获取图片的位置时,怎么也获取不到.换用offsetLeft就能够成功获取到了.虽然实现了我想要的效果,但是还是不甘心啊,没有找到原因 ...