Несоответствие типов данных приводит к ошибке времени выполнения в C ++ - PullRequest
0 голосов
/ 14 апреля 2020

Я пишу код для вычисления kth root с использованием бинарного поиска.

#include <iostream>
#include<math.h>
using namespace std;
bool isPossible(long n,int k,long mid)
{
    long ans=pow(mid,k);
    if(ans<=n)
    {
        return true;
    }
    return false;
}
int main() {
    int t,k;
    long n;
    cin>>t;
    for(int i=0;i<t;i++)
    {
        cin>>n>>k;
        int s=1;
        long e=n;
        long answer=n;
        while(s<=e)
        {
            long mid=(s+e)/2;
            if(isPossible(n,k,mid))
            {
                answer=min(answer,mid);
                s=mid+1;
            }
            else
            {
                e=mid-1;
            }
        }
        cout<<answer<<endl;
    }
}

Этот код приводит к Отказано в разрешении collect2.exe: ошибка: ld вернул 1 состояние выхода Если я изменю тип данных функции ans в isPossible () , чтобы удвоить успешное выполнение программы, или если я изменю оператор проверки на

    if(pow(mid,k)<=n)
    {
        return true;
    }

I haven ' я не видел такого рода ошибки из-за несоответствия типов данных, я не понимаю, почему это происходит здесь, потому что обычное хранение возвращаемого значения pow () в int не вызывает ошибки такого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...