P9750 [CSP-J 2023] 一元二次方程 题解
1.CF1909C Heavy Intervals 题解2.CF1913C Game with Multiset 题解
3.P9750 [CSP-J 2023] 一元二次方程 题解
4.CF1891B Deja Vu 题解5.CF1907B YetnotherrokenKeoard 题解6.CF1913B Swap and Delete 题解7.CF1121A Technogoblet of Fire 题解8.CF1162B Double Matrix 题解9.CF1184B1 The Doctor Meets Vader (Easy) 题解10.CF133B Unary 题解11.P8661 [蓝桥杯 2018 省 B] 日志统计 题解12.P3891 [GDOI2014] 采集资源 题解13.CF1804C Pull Your Luck 题解14.CF1815A Ian and Array Sorting 题解15.CF1681C Double Sort 题解16.P8791 [蓝桥杯 2022 国 AC] 内存空间 题解17.CF1250A Berstagram 题解18.CF358B Dima and Text Messages 题解19.CF1737C Ela and Crickets 题解20.CF1817A Almost Increasing Subsequence 题解21.CF1670B Dorms War 题解22.CF121A Lucky Sum 题解23.CF875B Sorting the Coins 题解24.CF158C Cd and pwd commands 题解25.CF1040B Shashlik Cooking 题解26.CF958F1 Lightsabers (easy) 题解题面。
直接依照题意模拟即可,注意细节。
细节
第一
注意输出分式时分母为
第二
约分时,
第三
可以单独输出符号,注意别有多余的符号。
第四
当方程有两根且均是有理数时,要根据
第五
注意一下自己的符号有没有打对!!!!(无理数部分符号打错了还能有七十分真是奇迹)
第六
全输出
代码
#include<bits/stdc++.h>
#define ll long long
#define fr(i , a , b) for(ll i = a ; i <= b ; ++i)
#define fo(i , a , b) for(ll i = a ; i >= b ; --i)
using namespace std;
inline ll gcd(ll a , ll b)
{
return b == 0 ? a : gcd(b , a % b);
}
inline ll derta(ll a , ll b , ll c)
{
return b * b - 4 * a * c;
}
ll T , M , a , b , c;
signed main()
{
// freopen("data.in" , "r" , stdin);
// freopen("data.out" , "w" , stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> T >> M;
while(T--)
{
cin >> a >> b >> c;
if(derta(a , b , c) < 0)//判别式小于零,无解
{
cout << "NO" << '\n';
continue;
}
else if(derta(a , b , c) == 0)//两个有理数根
{
if(b == 0)
{
cout << 0 << '\n';
continue;
}
else
{
ll ccf = gcd(abs(2 * a) , (abs(-b)));
if(-b * a < 0)
{
cout << "-";
}
cout << abs(-b) / ccf;
if(abs(2 * a) / ccf != 1)
{
cout << "/" << abs(2 * a) / ccf << '\n';
}
else
{
cout << '\n';
}
}
}
else
{
//x1 = (-b - sqrt(derta(a , b , c))) / (2 * a);
//x2 = (-b + sqrt(derta(a , b , c))) / (2 * a);
ll dt = derta(a , b , c);
ll ccf = gcd(abs(a) , abs(b));
double sqdt = sqrt(dt);
if(sqdt - (ll)sqrt(dt) == 0.0)//有理数
{
dt = sqrt(dt);
ll flag;
if(2 * a > 0)
{
flag = 1;
}
else
{
flag = -1;
}
ccf = gcd(abs(-b + dt * flag) , abs(2 * a));
if((-b + dt * flag) * a < 0)
{
cout << "-";
}
cout << abs(-b + dt * flag) / ccf;
if(abs(2 * a) / ccf != 1)
{
cout << "/" << abs(2 * a) / ccf << '\n';
}
else
{
cout << '\n';
}
}
else//无理数
{
//有理数部分
ccf = gcd(abs(-b) , abs(2 * a));
if(b != 0)
{
if(-b * a < 0)
{
cout << "-";
}
cout << abs(-b) / ccf;
if(abs(2 * a) / ccf != 1)
{
cout << "/" << abs(2 * a) / ccf;
}
}
//无理数部分
ll cf = dt , w_fz = dt , q2 = 1;
fo(i , sqrt(M * M * 4) , 1)
{
if(cf % (i * i) == 0)
{
cf /= i * i;
w_fz /= i * i;
q2 = i;
break;
}
}
ccf = gcd(q2 , abs(2 * a));
if(a < 0 && b != 0)
{
cout << "+";
}
else
{
if(b != 0 && q2 != 0)
{
cout << "+";
}
}
if(q2 / ccf != 1)
{
cout << q2 / ccf << "*";
}
if(w_fz != 1)
{
cout << "sqrt(" << w_fz << ")";
}
if(abs(2 * a) / ccf != 1)
{
cout << "/" << abs(2 * a) / ccf << '\n';
}
else
{
cout << '\n';
}
}
}
}
return 0;
}
- 一个好的指挥官不会背叛他的军队,无论代价是什么。
- 一个更好的指挥官知道当他想背叛他的军队时,什么时候应该伪装。
- 一个最好的指挥官精明地确立自己的绝对领导,并引领着人民走向更好的未来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?