70分WA求助
查看原帖
70分WA求助
476514
金帆海007楼主2024/10/12 12:14
#include<bits/stdc++.h>
using namespace std ;
int main( ) {
	int T , M ;
	cin >> T >> M ;
	int a , b , c ;
	while ( T-- ) {
		cin >> a >> b >> c ;
		if ( a < 0 ) {
			a = -a ;
			b = -b ;
			c = -c ;
		}
		int dat = b * b - 4 * a * c ;
		if ( dat < 0 ) {
			cout << "NO" << endl ;
			continue ;
		}
		else if ( dat == 0 ) {
			if ( b % ( 2 * a ) == 0 ) {
				cout << ( -b ) / ( 2 * a ) << endl ;
				continue ;
			}
			else {
				int k = __gcd( b , 2 * a ) ;
				cout << ( -b ) / k << "/" << 2 * a / k << endl ;
				continue ; 
			}
		}
		else {
			int k = __gcd( -b , 2 * a ) ;
			int cnt = 1 ;
			int t = sqrt( dat ) ;
			int ans = -b ;
			if ( t * t == dat ) {
				dat = t ;
				ans = ans + dat ;
				a = a * 2 ;
				int k = __gcd( ans , a ) ;
				if ( ans % a == 0 ) {
					cout << ( ans / k ) / ( a / k ) << endl ; 
				}
				else {
					cout << ans / k << "/" << a / k << endl ;	
				}
			}
			else {
				k = abs( k ) ;
				if ( b != 0 ) {
					if ( abs( b ) % ( 2 * a ) == 0 ) {
						cout << ( -b ) / ( 2 * a ) << "+" ;
					}
					else {
						cout << ( -b ) / k << "/" << 2 * a / k << "+" ;
					}
				}
				while ( t >= 1 ) {
					if ( dat % ( t * t ) == 0 ) {
						dat = dat / t / t ;
						cnt = cnt * t ;
					}
					t-- ;
				} 
				k = __gcd( cnt , 2 * a ) ;
				if ( ( cnt / k ) == 1 ) {
					if ( k < 0 ) {
						cout << "sqrt(" << ( dat ) << ")" ;	
					}
					else {
						cout << "sqrt(" << ( dat ) << ")" ;
					}
				}
				else {
					cout << cnt / k << "*sqrt(" << ( dat ) << ")" ;
				}
				if ( 2 * a / k != 1 ) {
					cout << "/" << ( 2 * a ) / k << endl ;
				}
				else {
					cout << endl ;
				}
			}
		}
	}
	
	return 0 ;
} 

2024/10/12 12:14
加载中...