题解 | #好好好数组#

好好好数组

https://www.nowcoder.com/practice/bacd2c7176e945ee88e7d83c6019613d

注意到题面当中 。说明对于一个数组当中 确定后,剩下的所有元素可以由后一个元素推得,所以不同的数组至多有 种。

对于取模运算有 ,基于此性质接下来对 的情况进行讨论:

时,,直到 处变成 ,因此有三个不同的数字。

时,(末尾的若干个元素全部相等),直到 处变成 ,因此有两个不同的数字。

时,所有元素都为 ,因此仅有一个不同的数字。

分类讨论即可,记得特判

#include<bits/stdc++.h>
using namespace std;
#define LL long long
const LL maxn=1100000,M=998244353;
LL T,n,m,ans=0,a[maxn]={};
void solve(){
	scanf("%lld%lld",&n,&m);
	if(n==1){
		if(m==1)ans=2;
		else ans=0;
	}
	else if(n==2){
		if(m==1)ans=3;
		else if(m==2)ans=2;
		else ans=0;
	}
	else{
		if(m==1)ans=n+1;
		else if(m==2)ans=n;
			else if(m==3)ans=1;
				else ans=0;
	}
	printf("%lld\n",ans);
}
int main(){
	scanf("%lld",&T);
	while(T--)solve();
	return 0;
}
全部评论
干嘛要特判?题面明确了m≤n的。n=1,m=1,ans=n+1;n=2,m=1,ans=n+1;n=2,m=2,ans=n;这仨没有任何一个需要特判。
1 回复 分享
发布于 01-25 03:58 广东
什么?这题解原来是你写的。我这道题打表找规律的,就写了四个if就过了,然后就想看看什么原理,就看见一篇题解,没看见作者是你……
点赞 回复 分享
发布于 01-26 22:39 河南

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务