25届小登,没看到老登的题解,遂有此文-__-
A题签到题,对大部分老登来说,轻松AC,但对新手来说,还是有些难度的,cf上的题解也是一笔带过,所以才写这一篇详解,造福小小登们:)
先上AC代码

using namespace std;
#define endl '\n'
long long t;

void solve()
{
    long long n,a,b;
    long long ans=0;
    cin>>n>>a>>b;
    if(b==0)
    {
        ans=max(a *n,n);
        cout<<ans<<endl;
        return;
    }
     
    long long x=((n*b+a-1)+b-1)/(2*b);//向上取整
    x=min(x,n);
    cout<<x*a+(1+b*x)*(n-x)<<endl;
}

int main()
{
    cin >> t;
    while(t--)
    {
        solve();
    }
}

首先先对总攻击力列式,很容易得到攻击力为

其中
消去可得关于的一元二次方程,易知其存在最大解\

坑点解析

(1)可取0,需要特判,见代码的12,18行
(2)在处理非整数解时,会在分子上加上分母的一半减一,比如17行分子中的
蒟蒻实力浅薄,轻喷(゚∀゚)