P8284

思路

在比赛的时候,第一眼看过去就觉得是道诈骗题(实际上确实是诈骗题),花了十分钟写完,一交,90分。。。调了半天也没调出来,最后仔细审了一遍题豁然开朗,现在,就让我们一起来审一审题。

  • 对于每个 \(i\;(1 \leq i \leq n-1)\),满足\(a_i=\gcd(a_{i+1},a_{i+2},\dots,a_{n-1},a_n)\)

这个条件非常关键,我们从小的开始分析。如果要满足这个条件,那么 \(a_{n-1}=\gcd(a_n)\)。我们又知道一个数的最大公约数就是他本身,所以 \(a_{n-1}=\gcd(a_n)=a_n\)\(a_{n-2},a_{n-3},\dots,a_2,a_1\) 同理都等于 \(a_n\)。于是乎,我们得到了一个结论:这个序列中的数全部相等。现在,你们知道该怎么做了么?因为题目中有说 :

  • 对于每个 \(i\;(1 \leq i \leq 10^5)\),\(a_i\) 至多在序列中出现 \(k\) 次。

所以只要满足 \(k \geq n\) 这个条件,一定存在无数多个解,否则无解。怎么样,是不是道诈骗题?

代码

#include<bits/stdc++.h>
using namespace std;
long long t,n,k,num; 
int main(){
	cin>>t;
	while(t--){
		cin>>n>>k;
		if(k>=n){//满足条件
			puts("5 or more");
			for(int i=1;i<=5;++i){
				for(int j=1;j<=n;++j){
					cout<<i<<" ";//输出字典序最小的五种解,也就是1,2,3,4,5
				}
				puts("");
			}
			continue;
		}
		else puts("Impossible");//否则无解
	}
	return 0;
}

完结撒花~~

posted @   SunsetLake  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧

阅读目录(Content)

此页目录为空

-->
点击右上角即可分享
微信分享提示