运行此程序时出现SIGSTOP错误。为什么是这样?

时间:2019-07-24 18:49:55

标签: binary-search

我正在解决有关Codechef Cookoff 2019的问题(代码:TWOVRIBL)。 链接到问题:https://www.codechef.com/COOK108B/problems/TWOVRIBL

我的方法:我尝试使用Binary Search查找P。目标是找到X达到Xf的最大步骤数。

-选择任何正整数P使得P⋅P> Y。 -将X更改为P。 -将P⋅P加到Y。 所以我想得到最大的答案,我需要选择P使得P.P> Y 和P

请帮助! //我的代码:

#include <iostream>
using namespace std;

int find(long y_sqr,long X,long Xf)
{
    int left=X+1,right=1000,mid;
    long num=0,distance_from_X=99990;
    while(left<=right)
    {
        mid=(left+right)/2;
        if(mid*mid<=y_sqr)
        {
            left=mid+1;
        }
        else
        {
            if(mid-X < distance_from_X)
            {
                num=mid;
                distance_from_X=mid-X;
            }
            right=mid-1;

        }
    }
    return num;


}

int main() 
{
    long T;
    cin>>T;
    while(T--)
    {
        long Xf;
        cin>>Xf;
        long X=0,Y=0,P=0,steps=0;
        while(P < Xf)
        {
            P=find(Y,X,Xf);
            if(P*P<=Xf*Xf)
            {
                Y+=P*P;
                X=P;
                steps++;
            }

        }
        if(P!=X)
        {steps++;}
        cout<<steps<<" ";
    }
    return 0;
}

0 个答案:

没有答案