求助第十九个点,WA。
查看原帖
求助第十九个点,WA。
418739
gongziwen楼主2022/11/27 09:14
#include<bits/stdc++.h>
using namespace std;
int q;
int main()
{
    cin>>q;
    while(q--)
    {
        double k;
        cin>>k;
        k--;
        long long zq=(1+sqrt(8*k+1))/4;//这是求在第几个周期,用等差数列解得二次方程
        if(k==1) zq=0;
        long long djg=k-(2*zq*zq-zq)+1,gs=zq*4+1;
        if(k==1||k==0)//特例
        {
            cout<<0;
            continue;
        }
        else if(k==2) cout<<0;
        else if(k==3) cout<<1;
        else if(k==4) cout<<0;
        else if(k==5) cout<<-1;
        else if(k==6) cout<<0;
        else//分段
        {
            if(djg==1) cout<<0;
            if(djg>1&&djg<(gs-1)/4+1) cout<<djg-1;
            if(djg==(gs-1)/4+1) cout<<zq;
            if(djg>(gs-1)/4+1&&djg<(gs-1)/2+1) cout<<zq-(djg-((gs-1)/4+1));
            if(djg==(gs-1)/2+1) cout<<0;
            if(djg>(gs-1)/2+1&&djg<(gs-1)/4*3+1) cout<<-(djg-((gs-1)/2+1));
            if(djg==(gs-1)/4*3+1) cout<<-zq;
            if(djg>(gs-1)/4*3+1&&djg<gs) cout<<-zq+(djg-((gs-1)/4*3+1));
            if(djg==gs) cout<<0;
        }
        cout<<"\n";
    }
    return 0;
}

2022/11/27 09:14
加载中...