第一次:60分 第二次:80分 第三次:40分 题目:P2026 代码:
//
// main.cpp
// P2026
//
// Created by 蜀都客车 on 2021/4/10.
//
#include <cstdio>
inline int gcd(int a,int b) {
return b>0 ? gcd(b,a%b):a;
}
struct p2026
{
int molecule;
int denominator;
int ans = 1;
bool ynint = false;
};
int print( p2026 k, p2026 b )
{
if( k.ynint && b.ynint )
{
if( b.ans > 0 ) printf( "y=%dx+%d", k.ans, b.ans );
else if( b.ans == 0 ) printf( "y=%dx", k.ans );
else printf( "y=%dx%d", k.ans, b.ans );
}
else
{
if( k.ynint )
{
if( b.ans > 0 ) printf( "y=%dx+%d/%d", k.ans, b.molecule, b.denominator );
else if( b.ans == 0 ) printf( "y=%dx", k.ans );
else printf( "y=%dx%d/%d", k.ans, b.molecule, b.denominator );
}
else if( b.ynint )
{
if( b.ans > 0 ) printf( "y=%d/%dx+%d", k.molecule, k.denominator, b.ans );
else if( b.ans == 0 ) printf( "y=%d/%dx", k.molecule, k.denominator );
else printf( "y=%d/%dx%d", k.molecule, k.denominator, b.ans );
}
else
{
if( b.ans > 0 ) printf( "y=%d/%dx+%d/%d", k.molecule, k.denominator, b.molecule, b.denominator );
else if( b.ans == 0 ) printf( "y=%d/%dx", k.molecule, k.denominator );
else printf( "y=%d/%dx%d/%d", k.molecule, k.denominator, b.molecule, b.denominator );
}
}
return 0;
}
int main( int argc, char**argv )
{
p2026 k, b;
int x[3], y[3];
scanf( "%d%d%d%d", &x[1], &y[1], &x[2], &y[2] );
if( ( y[1] - y[2] ) % ( x[1] - x[2] ) == 0 )
{
k.ans = ( y[1] - y[2] ) / ( x[1] - x[2] ), k.ynint = true;
b.ans = (( y[1] * x[2] )-( y[2] * x[1] )) / ( x[2] - x[1] ), b.ynint = true;
}
else
{
int gcdk = gcd(( y[1] - y[2] ), ( x[1] - x[2] ));
k.denominator = ( x[1] - x[2] ) / gcdk;
k.molecule = ( y[1] - y[2] ) / gcdk;
k.ans = ( y[1] - y[2] ) / ( x[1] - x[2] );
int gcdb = gcd((( y[1] * x[2] )-( y[2] * x[1] )), ( x[2] - x[1] ));
b.denominator = ( x[2] - x[1] ) / gcdb;
b.molecule = (( y[1] * x[2] )-( y[2] * x[1] )) / gcdb;
b.ans = (( y[1] * x[2] )-( y[2] * x[1] )) / ( x[2] - x[1] );
}
if( k.denominator < 0 && k.molecule < 0 ) k.denominator = -k.denominator, k.molecule = -k.molecule, k.ans = 1;
if(( k.denominator < 0 && k.molecule > 0 )) k.denominator = -k.denominator, k.molecule = -k.molecule, k.ans = -1;
if( b.denominator < 0 && b.molecule < 0 ) b.denominator = -b.denominator, b.molecule = -b.molecule, b.ans = 1;
if(( b.denominator < 0 && b.molecule > 0 )) b.denominator = -b.denominator, b.molecule = -b.molecule, b.ans = -1;
print( k, b );
return 0;
}