题解:P10337 [UESTCPC 2024] 操作序列
Genshin_ZFYX · · 题解
前言
这题代码操作并不难,但思维难度是有的,连我也去评论区看了看别人的思路才做出来的。
解题思路
首先,我们可以先证明一个很重要的结论:
假设有一个序列
我们把除了
我们再拿原来的
我们会发现,虽然值不同,但是每个数之间的倍数关系是不变的!这就跟老师给全班同学发了了一台电脑(怎么可能),唯独你没有被发到。这个例子和老师到你家去抢了一台电脑一样,每名同学间电脑的数量差一样的(其实就是等式的性质,只不过有多个数)。
所以说,把一个长度为
我们不难想到,当所有
而
结论:
AC 代码:
#include<bits/stdc++.h>
using namespace std;
//#define int long long
#define I return
#define love 0
#define FIRESTARS ;
int a[10005];
signed main()
{
cin.tie(0)->sync_with_stdio(0);
int t,n,f=1;cin>>t;
while(t--)
{
f=1;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=2;i<=n;i++)
if(a[i]!=a[i-1])
{
f=0;
break;
}
cout<<(f?n:n-1)<<'\n';
}
I love FIRESTARS
}