标签:scan 题目 ios 哈哈 ups mat inpu size -o
Sunny\ finds\ a\ mysterious\ place.Sunny finds a mysterious place.
But\ he\ is\ trapped\ inside.But he is trapped inside.
有一天,当 SunnySunny 闲逛的时候,发现了一个按钮
好奇心驱使他按下了这个按钮
突然间,天旋地转 \dots…
已新增一组样例
醒来之后,Sunny 发现自己站在一个奇怪的地方
这个地方有 n 个平台,形成了一个环
这时,Ethan 的声音响起:
“哈哈哈哈哈哈,恭喜你,你是第一个来到死亡之地的人”
“正如你所看到的,这个地方有 n 个平台,你现在站在 00 号平台上”
“剩余平台按顺时针编号 1,2,3\dots n-11,2,3…n−1 ”
“也就是说,你身后的那个平台就是 n-1n−1 号平台”
“你每次能够顺时针跳 i 个平台,i\in[1,n]i∈[1,n] ”
(每次的 ii 可以不一样!!)
“如果你能够经过所有平台(初始 00 号位置不算),那你就能逃出死亡之地了”
(这里指的是一开始的 00 号位置不算经过,需要再次经过 00 号位置)
“不过,这样太简单了,我会给你一些数 a_jaj?,表示你不能一次顺时针跳 a_jaj? 个平台”
“还有,你必须要用最少的跳跃次数完成我的任务”
“如果你不能满足我的上面两个要求,所有平台就会消失,你将会掉入下面的岩浆之中”
现在,Sunny 想知道他是否可能逃出这个地方
如果不行,输出 -1−1
如果可以,输出他最少所需的跳跃次数
因为 Sunny 觉得死亡之地实在是太有趣了,所以他决定多玩几次,多组数据!!!
第一行,一个正整数 TT,代表数据组数
接下来 2T2T 行,共 TT 组数据:
第 2*i-12∗i−1 行,两个整数 n,kn,k,kk 代表该组数据 a_jaj? 的个数
第 2*i2∗i 行,kk 个数,第 jj 个数表示 a_jaj?
TT 行,第 ii 行表示第 ii 组数据的输出
3 5 4 1 2 3 4 5 4 1 2 4 5 6 3 1 3 5
-1 5 -1
第一组数据:
Sunny 每次只能顺时针跳 5 个平台,易知不可能完成
第二组数据:
Sunny 每次只能顺时针跳 3 个平台,跳 5 次即可
k\leq n\leq 10^6k≤n≤106
0\leq k0≤k
1\leq n1≤n
保证 \sum{n_i}\leq 3*10^6∑ni?≤3∗106
a_i\leq nai?≤n,且互不相同
测试点 1:5\%,n=11:5%,n=1
测试点 2:5\%,n\leq52:5%,n≤5
测试点 3:10\%,n\leq153:10%,n≤15
测试点 4:15\%,n\leq3004:15%,n≤300
测试点 5:25\%,n\leq50005:25%,n≤5000
测试点 6:40\%,n\leq10^66:40%,n≤106
本题较为卡空间
请使用 scanfscanf!
梦醒了……
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> using namespace std; int t,a[1000610]; bool pd[1000610]; int read(){ int a=0,b=1; char ch=getchar(); while((ch<48||ch>57)&&ch!=‘-‘){ ch=getchar(); } if(ch==‘-‘){ b=-1; ch=getchar(); } while(ch<48||ch>57){ ch=getchar(); } while(ch>47&&ch<58){ a=a*10+ch-48; ch=getchar(); } return a*b; } int gcd(int a,int b){ return !b?a:gcd(b,a%b); } int main(){ t=read(); for(int l=0;l<t;l++){ int n,k,d; n=read(),k=read(); d=n; for(int i=1;i<=k;i++){ a[i]=read(); pd[a[i]]=1; } if((n==1)&&(k==1)){ printf("-1\n"); pd[1]=0; continue; } for(int i=1;i<=n;i++){ if(!pd[i]){ d=gcd(d,i); } } if(d>1){ printf("-1\n"); } else{ printf("%d\n",n); } for(int i=1;i<=k;i++){ pd[a[i]]=0; } } return 0; }
标签:scan 题目 ios 哈哈 ups mat inpu size -o
原文地址:https://www.cnblogs.com/xiongchongwen/p/11651325.html