温馨提示:不用数学会超时
查看原帖
温馨提示:不用数学会超时
1361104
Jack_2011_Liu楼主2024/6/15 13:10
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int find (unsigned long long a,unsigned long long b,unsigned long long c)
{
    unsigned long long m,n;
    unsigned long long m_and_n=a+2-(b*c);
    unsigned long long max=floor(m_and_n/2);
    if(m_and_n<=0)
    {
        printf("NO\r\n");
        return 0;
    }
    for (m=1;m<=max;m++)
    {
        n=m_and_n-m;
        if(m*n==a) 
        {
            cout<<m<<' '<<n<<endl;
            return 0;
        }
    }
    printf("NO\r\n");
    return 0;
}
struct problem
{
    unsigned long long a;
    unsigned long long b;
    unsigned long long c;
}q[100005];
int main()
{
    unsigned long long a,b,c;
    unsigned long long k;
    cin>>k;
    for (unsigned long long i=0;i<k;i++)
    {
        cin>>q[i].a>>q[i].b>>q[i].c;
    }
    for (unsigned long long i=0;i<k;i++)
    {
        find(q[i].a,q[i].b,q[i].c);
    }
    return 0;
}

一半TLE,不用二次方程和韦达超时,服了

2024/6/15 13:10
加载中...