Codeforces Round #519 B. Lost Array(思維)(1043B)
阿新 • • 發佈:2018-12-18
題意是給了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; }