【萌新求助】为何同一份代码,交了三次,评分各不一样?
  • 板块学术版
  • 楼主蜀都客车
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/4/10 09:26
  • 上次更新2023/11/5 00:47:29
查看原帖
【萌新求助】为何同一份代码,交了三次,评分各不一样?
349808
蜀都客车楼主2021/4/10 09:26

图 第一次: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;
}
2021/4/10 09:26
加载中...