题解CF66D

CF66D题目传送门

Part.1 思路

首先,一定要输出  n \ n\ 个数。

不超过  100 \ 100\ 位,是不是高精度?

众所周知,long long \texttt{long long}\ 的容纳范围为  9223372036854775808 \ -9223372036854775808\  9223372036854775807\ 9223372036854775807100 100\ 位是完全不够的。

众所周知,高精度是万恶之源,我这个懒蛋是肯定不会打的(就是忘了板子了),所以我们必须把范围限制在  9223372036854775807 \ 9223372036854775807\ 以下。

众所周知,这种题先找特殊条件,所以……我们先来扒一下题目。

如果  n=1\ n=1,那么只有一个数,无法求 gcd\gcd

如果  n=2\ n=2,题目要求  i,j\ \forall i,jgcd(ai,aj) \gcd(a_i,a_j)\ 不为  1\ 1,且  gcd(a1,a2,a3,......,an)=1\ \gcd(a_1,a_2,a_3,......,a_n)=1,一定无法满足。

如果  n=3\ n=3,有解  (99,55,11115)\ (99,55,11115)

如果  n=4\ n=4,有解  (385,360,392,8360)\ (385,360,392,8360)

如果  n=5\ n=5,解更多,不列了。

所以,这段代码我们可以确定:

if(n<=2)cout<<-1;

接下来,讨论  n3 \ n\geq3\ 的情况。

首先,我们要保证前两个数的最大公约数不为  1\ 1

这样的数对有很多,比如:

(2,4),(3,9),(6,15),(14,35),......(2,4),(3,9),(6,15),(14,35),......

还要保证第三个数和第一、二个数的最大公约数都不为  1\ 1

这样的数对依然有很多,比如:

(2,4,6),(3,9,12),(6,10,15),(14,10,35),......(2,4,6),(3,9,12),(6,10,15),(14,10,35),......

继续淘汰,要求三个数的最大公约数为  1\ 1

gcd(6,10,15)=1,gcd(14,10,35)=1,......\gcd(6,10,15)=1,\gcd(14,10,35)=1,......

那如果再加上一个数呢?

gcd(6,10,15,20)=1,gcd(14,10,35,20)=1,......\gcd(6,10,15,20)=1,\gcd(14,10,35,20)=1,......

继续……

gcd(6,10,15,20,30)=1,gcd(14,10,35,20,30)=1,......\gcd(6,10,15,20,30)=1,\gcd(14,10,35,20,30)=1,......

gcd(6,10,15,20,30,40)=1,gcd(14,10,35,20,30,40)=1,......\gcd(6,10,15,20,30,40)=1,\gcd(14,10,35,20,30,40)=1,......

也就是前两个数是  (6,15),(14,35),(26,65),(34,85) \ (6,15),(14,35),(26,65),(34,85)\ 且第  m(m3) \ m(m\geq3)\ 个数的值为  (m2)×10 \ (m-2)×10\ 就可以满足要求。

那何不打一下呢?

因为  n50\ n\leq50,最大值只会是  480 \ 480\ ,别说高精度了,long long \texttt{long long}\ 都用不上。

所以直接输出即可。

AC Code1:

#include<iostream>
using namespace std;
int n;
int main() {
	cin>>n;
	if(n<=2)cout<<-1;
	else {
		cout<<14<<endl<<35<<endl;
		for(int i=1; i<n-1; i++)cout<<i*10<<endl;
	}
	return 0;
}

Part.2

你以为就这么简单?

上面代码的时间复杂度为  O(n)\ \operatorname{O}(n),众所周知这个时间复杂度可以在  210ms \ 210\operatorname{ms}\ 内的时间解决。

然而,我们这道题完全可以求最优解……

我这次盯上了数据范围……2n502\leq n\leq50,打表好题……

于是通过上面的代码,我打出了一个表:

AC Code 2:

#include<iostream>
using namespace std;
int n;
int main(){
	cin>>n;
	switch(n){
		case 1:cout<<"-1";break;
		case 2:cout<<"-1";break;
		case 3:cout<<"14\n35\n10";break;
		case 4:cout<<"14\n35\n10\n20";break;
		case 5:cout<<"14\n35\n10\n20\n30";break;
		case 6:cout<<"14\n35\n10\n20\n30\n40";break;
		case 7:cout<<"14\n35\n10\n20\n30\n40\n50";break;
		case 8:cout<<"14\n35\n10\n20\n30\n40\n50\n60";break;
		case 9:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70";break;
		case 10:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80";break;
		case 11:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90";break;
		case 12:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100";break;
		case 13:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110";break;
		case 14:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120";break;
		case 15:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130";break;
		case 16:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140";break;
		case 17:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150";break;
		case 18:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160";break;
		case 19:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170";break;
		case 20:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180";break;
		case 21:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190";break;
		case 22:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200";break;
		case 23:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210";break;
		case 24:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220";break;
		case 25:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230";break;
		case 26:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240";break;
		case 27:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250";break;
		case 28:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260";break;
		case 29:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270";break;
		case 30:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280";break;
		case 31:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290";break;
		case 32:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300";break;
		case 33:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310";break;
		case 34:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320";break;
		case 35:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330";break;
		case 36:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340";break;
		case 37:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350";break;
		case 38:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360";break;
		case 39:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370";break;
		case 40:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380";break;
		case 41:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390";break;
		case 42:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400";break;
		case 43:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410";break;
		case 44:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410\n420";break;
		case 45:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410\n420\n430";break;
		case 46:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410\n420\n430\n440";break;
		case 47:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410\n420\n430\n440\n450";break;
		case 48:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410\n420\n430\n440\n450\n460";break;
		case 49:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410\n420\n430\n440\n450\n460\n470";break;
		case 50:cout<<"14\n35\n10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n310\n320\n330\n340\n350\n360\n370\n380\n390\n400\n410\n420\n430\n440\n450\n460\n470\n480";break;
	}
}

时间复杂度  O(1)\ \operatorname{O}(1)

可为什么实际跑起来却比  O(n) \ \operatorname{O}(n)\ 慢呢?好玄学。

感谢各位在评论区  hack \ hack\ 的大佬们~

posted @   Weslie_qwq  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示