您的位置:首页 > 其它

浙江中医药大学暑期训练测试赛八F

2017-07-31 15:13 155 查看

1571: Subarray GCD

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 90  Solved: 48

[Submit][Status][Web
Board]

Description

Given an array A1,A2...AN, you have to print the size of the largest contiguous subarray such that
GCD of all integers in that subarray is 1.

Formally,

For a subarray Ai,Ai+1...Aj where 1 ≤ i < j ≤ N to be valid: GCD(Ai,Ai+1...Aj) should be 1. You have to print the size of the
largest valid subarray.

If no valid subarray exists, output -1.

Note:A single element is not considered as a subarray according to the definition of this problem.

Input

First line contains T,
the number of testcases. Each testcase consists of N in
one line followed by Nintegers in the
next line.


Constraints

1 ≤ T ≤ 10
2 ≤ N ≤ 105
1 ≤ Ai ≤ 105

Output

For each testcase, print the required answer in one line.

Sample Input

2



7 2

3

2 2 4

Sample Output

2

-1

AC代码:
#include<iostream>

#include<algorithm>

#include<string.h>

#include<stdio.h>

using namespace std;

int gcd(int a,int b)

{

        while(b)//辗转相减法

        {

                int temp=a%b;

                a=b;

                b=temp;

        }

        return a;

}

int main()

{

        int t;

        scanf("%d",&t);

        while(t--)

        {

                int n;

                scanf("%d",&n);

                int x;

                scanf("%d",&x);

                for(int i=1;i<n;i++)

                {

                        int temp;

                        scanf("%d",&temp);

                        x=gcd(x,temp);

                }

                if(x==1)

                 
4000
      printf("%d\n",n);

                else

                        printf("-1\n");

        }

        return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: