蒟蒻求助CSP-J t2 40分代码
  • 板块学术版
  • 楼主SamHJD
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/10/29 16:39
  • 上次更新2023/10/27 05:09:16
查看原帖
蒟蒻求助CSP-J t2 40分代码
565684
SamHJD楼主2022/10/29 16:39

code

#include<bits/stdc++.h>
using namespace std;
int t;
long double n,e,d,p,q;
int main(){
    cin>>t;
    for(int i=1;i<=t;++i){
        cin>>n>>e>>d;
        if(n<e*d){
            cout<<"NO"<<endl;
            continue;
        }
        double dif=n-(e*d)+2,yi=1;
        double ans=(dif-sqrt((dif)*(dif)-(4*n)))/2;
        if(ans>dif-ans) ans=dif-ans;
        long long t1=ans,t2=dif-ans;//用的是转整数判断是否正确
        if(t1*t2==n && (t1-1)*(t2-1)+1==e*d) cout<<t1<<" "<<t2<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}

具体推柿子的过程:

(p1)×(q1)+1(p-1)\times(q-1)+1

=q(p1)(p1)+1=q(p-1)-(p-1)+1

=pqqp+2=pq-q-p+2

得:

ned=pq(pqqp+2)=p+q+2n-ed=pq-(pq-q-p+2)=p+q+2

difdifned+2n-ed+2,也就是 p+qp+q

p2+q2=(p+q)22pqp^2+q^2=(p+q)^2-2pq

代入:pq=p22pq+q2p-q=\sqrt{p^2-2pq+q^2} 得:

pq=(p+q)24pqp-q=\sqrt{(p+q)^2-4pq}

qq(p+q)24pqpq2\dfrac{\sqrt{(p+q)^2-4pq}-p-q}{2}

也就是 dif24ndif2\dfrac{\sqrt{dif^2-4n-dif}}{2}


刚学二次方程,考场上没推出来柿子,打的暴力

2022/10/29 16:39
加载中...