0319task
青蛙数
题意
对于一个有 $n$ 个元素且每个元素初始全是 $1$ 的数组 $x$,有 $m$ 次操作,每次操作选定数组三个位置 $x_a,x_b,x_c$,将其排序后改为 $\varphi (x_i)+10$ ,再给区间 $l,r$,对 $x_l , x_r$区间求和
分析
因为每个元素初始全是 $1$,可以先预处理存在数组里,对于每个元素,用结构体记下操作数,然后暴力求和即可。(虽然正解树状数组)
代码
#include<bits/stdc++.h>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
long long n,m,a,b,c,l,r,e[200005];
struct node{
long long sum;
}s[200005];
bool cmp(node x,node y){
return e[x.sum]<=e[y.sum];
}
int euler(int n) {
int ans=n;
for (int i=2;i*i<=n;i++)
if (n%i==0) {
ans=ans/i*(i-1);
while (n%i==0) n/=i;
}
if (n>1) ans=ans/n*(n - 1);
return ans;
}
int main() {
// freopen("B.in","r",stdin);
// freopen("B.out","w",stdout);
e[0]=1;
for(int i=1;i<=2e5;i++){
e[i]=euler(e[i-1])+10;
}
cin>>n>>m;
while(m--){
cin>>a>>b>>c>>l>>r;
node s1[10];
long long ans=0;
s1[1].sum=s[a].sum,s1[2].sum=s[b].sum,s1[3].sum=s[c].sum;
sort(s1+1,s1+4,cmp);
s[a].sum=s1[1].sum+1,s[b].sum=s1[2].sum+1,s[c].sum=s1[3].sum+1;
for(int i=l;i<=r;i++)ans+=e[s[i].sum];
cout<<ans<<"\n";
}
}
三角片
题意
已知等腰三角形底 $x$ ,求最大整数腰 $a$ 和高 $b$。
分析
已知勾股定理 $a^2=b^2+(\frac{x}{2})^2$,已知 $x$,为了使 $a$ 最大,则 $b$ 最大,因为 $a > b$ 且 $a,b$ 为整数,所以有 $b=(a-1)$ 时 $a,b$ 最大,所以有$a^2-b^2=x^2$。根据平方差公式,有$(a+b)(a-b)=x^2$,带入 $b=a-1$,得$x^2=1\times(a+a+1)=2a+1$,到推得到 $a=\frac{(\frac{n}{2})^2+1}{2}$,同时又 $b=a-1$ 。则面积 $S=\frac{x\times b}{2}=\frac{x\times (a-1)}{2}$,周长 $C=x+2\times a$。
代码
#include<bits/stdc++.h>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
long long t,x;
int main() {
cin>>t;
while(t--) {
cin>>x;
long long a=((n/2)*(n/2)+1)/2;
cout<<x+2*a<<" "<<x*(a-1)/2<<"\n";
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!