P5596 [название] XR-4
Этот вопрос присутствует в смотровом, чтобы подтолкнуть в течение длительного периода времени, но и раздвигает неправильно несколько раз, но в конце концов запустить его умерли от ситуации на границе.
Давайте посмотрим на то, как он должен нажать, чтобы решить этот вопрос головой.
\ [У ^ {2} -x ^ {2} = а х + Ь \]
\ [У ^ {2} = х ^ {2} + ах + Ь \]
\ [\, Потому что х \ ge0, а \ GE 0, б \ GE 0 \]
\ [\ Следовательно, у ^ 2 \ х GE ^ {2} + ах + Ь \]
\ [\ Поэтому мы пусть у = х + I (I \ GE 0) \]
\ [\, Так как у ^ 2 = (х + я) ^ 2 = х ^ 2 + 2ix + I ^ 2, Y ^ 2 = х ^ {2} + ах + Ь \]
\ [\ Следовательно, х ^ 2 + 2ix + I ^ 2 = х ^ {2} + ах + Ь \]
\ [(2i-а) х = би ^ 2 \]
\ [Х = \ {гидроразрыва би ^ 2} {2i-а} \]
\ [\ Х, потому что \ GE 0 \]
\ [\ Поэтому 2i-а | би ^ 2, 就是 (би ^ 2) \% (2i-а) == 0 \]
Таким образом , мы направляем перечисления \ (я \) , чтобы увидеть , может ли условие быть, а также специальный судья , что знаменатель \ (0 \) правовое положение.
Тем не менее, обязаны рассмотреть перечисление.
Мы обнаружили , что при \ (я> \ SQRT Ь \ ) , молекула является отрицательным, \ (I> \ FRAC {A} {2} \) , знаменатель положителен, поэтому никогда не будет соответствовать требованиям, потому что молекулы будут продолжать уменьшается, что увеличивает знаменатель, можно также числитель и знаменатель является отрицательными и удовлетворяющим приведенной выше формулой, таким образом , мы должны принять \ (\ тах (\ SQRT в, \ FRAC {а} {2}) \) .
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b;
ll sum;
int main()
{
scanf("%lld%lld",&a,&b);
for (ll i=0;i<=max((ll)sqrt(b),a/2);i++)
{
ll now1=b-i*i,now2=2*i-a;
if (now1==0&&now2==0)
{
printf("inf\n");
return 0;
}
if ((now1>0&&now2>0)||(now1<0&&now2<0)||now1==0)
if (now1%now2==0) sum++;
}
printf("%lld\n",sum);
return 0;
}
Существует граница предложения Если ситуация не является правильной, мы можем попробовать другой подход.