题解 CF1392A 【Omkar and Password】

其实这个题目要从数学角度分析:

如果输入数据全一样,直接输出n就好了

如果不一样最小的长度只有可能为1

vector代码来啦:

#include <iostream>
#include <vector>
using namespace std;

vector <int> vec;

int main()
{
    int n, k;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        bool flag = true;
        cin >> k;
        vec.resize(k);
        for(vector <int>::iterator it = vec.begin(); it != vec.end(); it++)
        {
            cin >> *it;
        }
        for(vector <int>::iterator it = vec.begin() + 1; it != vec.end(); it++)
        {
            if(*it != vec[0])
            {
                flag = false;
                break;
            }
        }
        if(flag)
        {
            cout << k << endl;
        }
        else
        {
            cout << "1\n";
        }
    }
    return 0;
}

arr代码也有的哦:

#include <iostream>
#include <vector>
using namespace std;

int arr[200005];

int main()
{
    int n, k;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        bool flag = true;
        cin >> k;
        for(int i = 1; i <= k; i++)
        {
            cin >> arr[i];
        }
        for(int i = 1; i <= k; i++)
        {
            if(arr[i] != arr[1])
            {
                flag = false;
                break;
            }
        }
        if(flag)
        {
            cout << k << endl;
        }
        else
        {
            cout << "1\n";
        }
    }
    return 0;
}

注意数组大小哦

posted @ 2020-09-16 18:02  HappyBobb  阅读(0)  评论(0编辑  收藏  举报  来源