前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Codeforces Round #519 B. Lost Array(思维)(1043B)

Codeforces Round #519 B. Lost Array(思维)(1043B)

作者头像
Ch_Zaqdt
发布2019-01-10 16:09:46
3520
发布2019-01-10 16:09:46
举报
文章被收录于专栏:Zaqdt_ACMZaqdt_ACM

题目链接:http://codeforces.com/contest/1043/problem/B

       题意是给了n个数表示a数组,根据题目中的式子我们可以推出x0,x1,x2....,然后要我们求出x数组的长度有多少个并且输出x数组的长度,如果对于x0,x1,x2...对于题目中的式子不冲突时就表示这个长度的x数组是可行的,也就是对于在用a数组推x数组时,每一个x数组的位置仅只对应一个值,也就是说x0=1,后面出现的x0的值都是1。

       思路是我们先根据a数组,将所有的x数组求出来,然后去枚举长度是否可行就好了。


AC代码:

#include <bits/stdc++.h>
#define inf 1000005
using namespace std;
int n;
int pre[1005];
int b[1005],a[1005];

int main()
{
  scanf("%d",&n);
  int num = 0,num1 = 0;
  pre[0] = 0;
  for(int i=1;i<=n;i++){
    scanf("%d",&pre[i]);
  }
  for(int i=0;i<n;i++){
    a[i] = pre[i+1] - pre[i];
  }
  for(int i=1;i<=n;i++){
    int flag = 0;
    for(int j=i;j<=n;j++){
      if(pre[j] - pre[j-1] != a[(j-1)%i]){
        flag = 1;
        break;
      }
    }
    if(flag == 0){
      b[num++] = i;
    }
  }
  printf("%d\n",num);
  for(int i=0;i<num;i++){
    printf("%d ",b[i]);
  }
  puts("");
  return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年10月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档