模考DAY4总结
今天是小信专场啊
1.题解部分
第一题:(小信爱音游)
打音游??我不会?
来看下一题(bushi
咳咳,我开玩笑的…
这道题非常简单,按照题目的公式计算难度就行了,最后需要打擂台计算min值, 公式:
\sqrt{(lx-x_i)\| \times (lx-x_i)\|+(ly-y_i)\| \times (ly-y_i)\|)} \div (t_i-lt)
部分代码:
double lt=t[0], lx=x[0], ly=y[0];
for(ll i=1;i<n;i++){
ans=max(sqrt(abs(lx-x[i])*abs(lx-x[i])+abs(ly-y[i])*abs(ly-y[i]))/(t[i]-lt), ans);
lt=t[i];
lx=x[i];
ly=y[i];
}
cout << fixed<<setprecision(10) <<ans << endl;
PS:最后需要使用强制高精度函数欧~
第二题:(寻找等边三角型)
这道题也还是比较简单,只需要把圆分成三份,然后枚举第一个节点,看其他两个节点在圆上有没有就行,判断公式:
mp[(x[i]+len)%x[n]]&&mp[(x[n]+x[i]-len)%x[n]]&&(x[i]+len+len+len)%x[n]==x[i]
部分代码:
mp[x[n]]++;
for(ll i=0;i<=n;i++){
ll len=x[n]/3;
if(mp[(x[i]+len)%x[n]]&&mp[(x[n]+x[i]-len)%x[n]]&&(x[i]+len+len+len)%x[n]==x[i]){
ans++;
}
}
cout <<ans/3;
第三题:(小信学习欧几里得算法)
这道题有点难了,需要一大堆数学推论,所以…
我们来分析一波!!!
首先我们发现 a \times b \div gcd(a, b ) = lcm(a, b), 那么就可以代入进函数f
f(a, b)=\frac{a \times b}{gcd(a, b)^2} = a \div gcd(a, b ) \times b \div gcd(a, b)
由于要求答案是质数,所以得出结论:
b是a的质数倍
由此得出代码,先用埃氏筛和dp预处理,然后直接输出就可以了
部分代码:
everyPrime(10000000);
dp[2]=1;
for(ll i=3;i<=10000000;i++)
if(p[i]!=0)
dp[i]=dp[i-1]+p[i];
else
dp[i]=dp[i-1]+1;
while(t--){
ll n;
cin>>n;
cout<<dp[n]<<endl;
}
函数代码:
void everyPrime(ll n){
for(ll i=2;i<=n;i++){
if(p[i]==0){
for(ll j=i*2;j<=n;j+=i){
p[j]++;
}
}
}
}
第四题:(小信的生产线)
这道题直接看我的题解就可以了
2.做题情况
第一题
很简单,10分钟AC
分数:AC 100pt
第二题
这道题比较曲折,最开始写的两重循环就不管了,后来感觉有可能会超时,于是又思考了一会就AC了
分数:AC 100pt
第三题
比较难,我写的暴力做法,这里出现了一个非常不应该错的错误,我没写freopen!!!!!!!!!!, 少拿了30分!!!!!!!!!
分数:RE 0pt
第四题
这道题感觉比第三题简单,我真的太*了,正解写出来了,提交了,** RE**了,数组开小了!!!!!!!!!!!
分数:RE 30pt
3.总结
这次模考本来是我人生中的高光时刻330分全班第一的,却因为我的粗心大意导致230分,真的是太太太太可惜了!!!!!!!!!
预期得分:330(全班第一!)
实际得分:230(第四,还行吧)
ε=(´ο`*)))唉祝我下次模考