社区讨论

T2 T3 求助

学术版参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo0zjf73
此快照首次捕获于
2023/10/22 12:45
2 年前
此快照最后确认于
2023/11/02 12:15
2 年前
查看原帖
T2:(6565pts)
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,mn=INT_MAX,cnt,ans;
signed main(){
    //freopen("road.in","r",stdin);
    //freopen("road.out","w",stdout);
    cin>>n>>m;
    int d[n],a[n+1];
    for(int i=1;i<n;i++) cin>>d[i];
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[i]>mn?a[i]=mn:mn=a[i];
    }
    for(int i=1;i<n;i++){
        if((d[i]-cnt)%m) ans+=((d[i]-cnt)/m+1)*a[i],cnt+=((d[i]-cnt)/m+1)*m-d[i];
        else ans+=(d[i]-cnt)/m*a[i],cnt+=d[i]-cnt-d[i];
    }
    cout<<ans;
}
T3:(5050pts)
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    //freopen("uqe.in","r",stdin);
    //freopen("uqe.out","w",stdout);
    int t,m;
    cin>>t>>m;
    while(t--){
        int a,b,c;
        cin>>a>>b>>c;
        if(b*b-4*a*c<0) cout<<"NO\n";
        else{
            int d=b*b-4*a*c;
            if((int)sqrt(d)*(int)sqrt(d)!=d){
                if(-b/(2*a)==0&&-b%(2*a)==0){
                    if(a<0) a=-a;
                    int ans1=1;
                    for(int i=2;i<3000;i++){
                        if(d%(i*i)==0) ans1*=i,d/=(i*i),i--;
                    }
                    if(ans1%(2*a)==0){
                        if(ans1/(2*a)==1) cout<<"sqrt("<<d<<")";
                        else cout<<ans1/(2*a)<<"*"<<"sqrt("<<d<<")";
                    }
                    else{
                        int y=2*a;
                        for(int i=2;i<3000;i++){
                            if(ans1%i==0&&y%i==0) ans1/=i,y/=i,i--;
                        }
                        if(ans1==1) cout<<"sqrt("<<d<<")/"<<y;
                        else cout<<ans1<<"*"<<"sqrt("<<d<<")/"<<y;
                    }
                }
                else{
                    if(-b%(2*a)){
                        int xx=-b,yy=2*a;
                        for(int i=2;i<3000;i++){
                            if(xx%i==0&&yy%i==0) xx/=i,yy/=i,i--;
                        }
                        cout<<xx<<"/"<<yy<<"+";
                    }
                    else cout<<-b/(2*a)<<"+";
                    if(a<0) a=-a;
                    int ans1=1;
                    for(int i=2;i<3000;i++){
                        if(d%(i*i)==0) ans1*=i,d/=(i*i),i--;
                    }
                    if(ans1%(2*a)==0){
                        if(ans1/(2*a)==1) cout<<"sqrt("<<d<<")";
                        else cout<<ans1/(2*a)<<"*"<<"sqrt("<<d<<")";
                    }
                    else{
                        int y=2*a;
                        for(int i=2;i<3000;i++){
                            if(ans1%i==0&&y%i==0) ans1/=i,y/=i,i--;
                        }
                        if(ans1==1) cout<<"sqrt("<<d<<")/"<<y;
                        else cout<<ans1<<"*"<<"sqrt("<<d<<")/"<<y;
                    }
                }
            }
            else{
                if(a<0) d=-sqrt(d)-b;
                else d=sqrt(d)-b;
                int y=2*a;
                if(d%y){
                    for(int i=2;i<3000;i++){
                        if(d%i==0&&y%i==0) d/=i,y/=i,i--;
                    }
                    cout<<d<<"/"<<y;
                }
                else cout<<d/y;
            }
            cout<<endl;
        }
    }
}

回复

0 条回复,欢迎继续交流。

正在加载回复...