『模拟赛』CSP-S模拟1
Rank
BAD
A. 喜剧的迷人之处在于
签。
正好早上还在改一个要分解质因数的题,所以一眼就出思路了。
首先将 \(a\) 的平方因子全部除去,剩下的就是 \(b\) 必须的因数,即若设将平方因子全部除去后的 \(a\) 为 \(a'\),则 \(b\) 应表示为 \(a'\times x^2\),从 \(L\) 这个下界开始只用找一次即可。处理好 \(a'\),那么 \(x\) 下界为 \(\lfloor {\sqrt{\lfloor {\frac{L}{a'}} \rfloor}} \rfloor\),特判下界是否合法,若不合法则判断 \(x+1\) 是否合法即可,若合法答案即为 \(\left(x+1\right)\times \left(x+1\right)\times a'\)。
点击查看代码
#include<bits/stdc++.h>
#define fo(x,y,z) for(register ll (x)=(y);(x)<=(z);(x)++)
#define fu(x,y,z) for(register ll (x)=(y);(x)>=(z);(x)--)
using namespace std;
typedef long long ll;
#define lx ll
inline lx qr()
{
char ch=getchar();lx x=0,f=1;
for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+(ch^48);
return x*f;
}
#undef lx
#define qr qr()
#define fi first
#define se second
const int Ratio=0;
const int N=1e6+5;
const int mod=1e6+777;
const int inf=1e9;
int n;
int pri[N],tot,bi[N],cnt;
bool yz[N];
namespace Wisadel
{
short main()
{
// freopen(".in","r",stdin),freopen(".out","w",stdout);
n=qr;
fo(i,2,1000000)
{
if(!yz[i]) pri[++tot]=i;
fo(j,1,tot)
{
if(i*pri[j]>1000000) break;
yz[i*pri[j]]=1;
if(i%pri[j]==0) break;
}
}
fo(i,1,n)
{
ll a=qr,l=qr,r=qr;
fo(j,1,tot)
{
if(pri[j]*pri[j]>a) break;
ll cas=pri[j]*pri[j];
while(a%cas==0) a/=cas;
}
ll zc=l/a;zc=sqrt(zc);
if(zc*zc*a==l)
{
printf("%lld\n",zc*zc*a);
continue;
}
bool can=0;
if((zc+1)*(zc+1)*a>r) printf("-1\n");
else printf("%lld\n",(zc+1)*(zc+1)*a);
}
return Ratio;
}
}
int main(){return Wisadel::main();}
B. 镜中的野兽
赛时自认为想到了 \(n=2\) 的性质但是假了遂 0pts,感觉小样例给的误导挺大的,之后就再也改不过来了,快结束时证了性质的错误性,但唐完了没打 10pts 暴力。
题解给人一种简单又不简单的美感。
C. 我愿相信由你所描述的童话
赛时打了抽象暴力,喜提 0pts。打到一半的时候想到了换成 dp 做,但一直没想好怎么设计状态。
暴力打好预计能有 30pts。
正解依旧抽象。
D. Baby Doll
这种全是不明意义函数并且捆绑的题,看一眼就没兴趣了。
赛后 5k 讲了神秘的解法,听不懂(
题解给了抽象的做法,看不懂(
(我太蒻了
末
高二开学第一次模拟赛,寄寄寄。
本来 10min 切 T1 挺自信的,结果一看三道数学题整不会了,纯纯罚坐 3.5h。
一些也许能拿到的暴力也没拿到,能力问题?心态问题?状态问题?
希望尽快调整吧,能这样纯粹的学 OI 的日子也不多了。
这两天打算出一个数据结构专题复习树状数组。
完结撒花~