社区讨论

求调P9750

灌水区参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m2lwc0ay
此快照首次捕获于
2024/10/23 21:14
去年
此快照最后确认于
2025/11/04 16:24
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int main(){
	int t,mx;
    cin>>t>>mx;
    while(t--){
    	int a,b,c;
    	cin>>a>>b>>c;
    	int d = b * b - 4 * (a * c);
    	if(d < 0){
    		cout<<"NO"<<endl;
    		continue;
		}
		if(sqrt(d) == (int)(sqrt(d))){
			int fz = sqrt(d) - b;
			int fm = 2 * a;
			int g = __gcd(fz,fm);
			if(fm / g == 1){
				if((fz < 0 && fm > 0)|| (fm < 0 && fz > 0)){
					cout<<"-";
				}
				cout<<abs(fz / g)<<endl;
				continue;
			}else{
				if((fz < 0 && fm > 0)|| (fm < 0 && fz > 0)){
					cout<<"-";
				}
				cout<<abs(fz / g)<<"/"<<abs(fm / g)<<endl;
				continue;
			}
		}else{
			int fz = -1 * b,fm = 2 * a;
			if(fz != 0 && fm != 0){
				int g = __gcd(fz,fm);
				if(fm / g == 1){
					if((fz < 0 && fm > 0)|| (fm < 0 && fz > 0)){
						cout<<"-";
					}
					cout<<abs(fz / g);
				}else{
					if((fz < 0 && fm > 0) || (fm < 0 && fz > 0)){
						cout<<"-";
					}
					cout<<abs(fz / g)<<"/"<<abs(fm / g);
				}
				cout<<"+";
			}
			fz = 0;
			for(int i = 1; i <= sqrt(d); i++){
				if(d % (i * i) == 0){
					fz = i;
				}
			} 
			fm = 0;
//			cout<<"三角:"<<d<<endl;
			int gc = __gcd(fz,2 * a);
			d = d / fz / fz;
			fz /= gc;
			fm = 2 * a / gc;
//			cout<<fm<<endl;
			if(fz >= 2){
				cout<<fz<<"*";
			}
			cout<<"sqrt(";
			cout<<d<<")";
			if(fm != 0 && fm != 1 && fm != -1){
				cout<<"/";
				cout<<abs(fm);
			}
			cout<<endl;
		}
	}
	return 0;
}

回复

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

正在加载回复...