当前位置: 首页 > news >正文

[CSP-J 2023] 一元二次方程(模拟)

变态的大模拟……

洛谷题目传送门icon-default.png?t=O83Ahttps://www.luogu.com.cn/problem/P9750

解题思路

主要还是模拟,题目让你求啥你就求啥,要注意细节。

然后化简根式的可以用质因数分解一下即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int q,n;
int aabs(int x)//绝对值 
{if(x<0)return -x;return x;
}
int cnt[1001];
int delta;
int qpow(int a,int b)//快速幂 
{int res=1;while(b){if(b&1)res*=a;a*=a;b>>=1; }return res;
}
int calc(int del)//质因数分解化简根式 
{memset(cnt,0,sizeof cnt);int res=1;int temp=del;vector<int> ttt;for(int i=2;i<=temp;i++){if(temp%i==0){while(temp%i==0){cnt[i]++;temp/=i;}ttt.push_back(i);}}del=1;for(auto i:ttt){if(cnt[i]%2)//处理分解的因数 {del*=i;cnt[i]--;}if(cnt[i]%2==0){res*=qpow(i,cnt[i]/2);}}delta=del;return res;
}
signed main()
{
//	freopen("P9750_4.in","r",stdin);
//	freopen("aa.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>q>>n;int a,b,c;int temp,fz,fm,g;int fz2,fm2;int q1,q2,r;while(q--){cin>>a>>b>>c;delta=b*b-4*a*c;if(delta<0)//delta小于0,无解 {cout<<"NO"<<endl;continue;}temp=sqrt(delta);if(temp*temp==delta)//若有有理数解 {fz=-b+temp;fz2=-b-temp;fm=2*a;if(fz2*fm>fz*fm)//题目说了,要取较大的解 fz=fz2;g=__gcd(aabs(fz),aabs(fm));fz/=g;fm/=g;if(aabs(fm)==1){if(fz*fm>=0)cout<<aabs(fz);elsecout<<"-"<<aabs(fz);}else{if(fz*fm<0)cout<<"-"<<aabs(fz)<<"/"<<aabs(fm);elsecout<<aabs(fz)<<"/"<<aabs(fm);}}else{//没有有理数解 fz=-b;fm=2*a;g=__gcd(aabs(fz),aabs(fm));fz/=g;fm/=g;if(fz){if(aabs(fm)==1){if(fz*fm>0)cout<<aabs(fz);elsecout<<"-"<<aabs(fz);}else{if(fz*fm<0)cout<<"-"<<aabs(fz)<<"/"<<aabs(fm);elsecout<<aabs(fz)<<"/"<<aabs(fm);}cout<<"+";}q2=calc(delta);double t=q2/double(2*a);int t2=t;if(t-t2==0){if(aabs(t2)==1)cout<<"sqrt("<<delta<<")";elsecout<<aabs(t2)<<"*sqrt("<<delta<<")";}else{t=1/t;t2=t;if(t-t2==0)cout<<"sqrt("<<delta<<")/"<<aabs(t2);else{fz=q2;fm=2*a;g=__gcd(aabs(fz),aabs(fm));fz/=g;fm/=g;if(aabs(fz)==1){cout<<"sqrt("<<delta<<")/"<<aabs(fm);} elsecout<<aabs(fz)<<"*sqrt("<<delta<<")/"<<aabs(fm);}}}cout<<endl;}
}

最后,祝各位大佬 csp2024 rp++!


http://www.mrgr.cn/news/58601.html

相关文章:

  • OneNote不能拖动页面解决方案
  • 【C#】使用Visual Studio创建Windows Forms应用程序计算对角线之和
  • CentOS6升级OpenSSH9.2和OpenSSL3
  • 利用java visualvm 分析内存溢出oom
  • 解锁流量密码:TikTok常见引流方式分享
  • Android Room(SQLite) too many SQL variables异常
  • bitpoke- mysql-operator cluster
  • java 17天 TreeSet以及Collections
  • SSH 的 N 大黑科技玩法
  • LeetCode Hot 100:二分查找
  • Visual Studio中无法打开Qt中UI文件,简单快捷处理方法
  • Zookeeper客户端工具 Apache Curator 最佳实践
  • 10340 文本编辑器(vim)
  • Swift 是一种由苹果公司开发的强大而直观的编程语言,主要用于开发 iOS、macOS、watchOS 和 tvOS 等苹果平台的应用程序。
  • C++中如何使用文件系统路径
  • AcWing 89:a^b ← 快速幂
  • 136.只出现一次的数字
  • 【开源项目】经典开源项目数字孪生工地——开源工程及源码
  • fpga系列 HDL: 竞争和冒险 01
  • 计算机网络:网络层 —— IPv4 协议的表示方法及其编址方法
  • python 线程间通信用什么手段
  • 微软投资比特币:将总资产1%投资于BTC?股东投票决定最终结果!
  • 洛谷 P1060 [NOIP2006 普及组] 开心的金明
  • C++ 移动语义
  • Vue学习记录之二十 postcss自定义插件及Unocss的使用
  • 遇到这3种接口测试问题,其实,你可以这么办~