1 条题解

  • 0
    @ 2025-8-24 23:07:51

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar mishitaotuoyyds
    万物逃不出因果,聆听命运的回响

    搬运于2025-08-24 23:07:51,当前版本为作者最后更新于2025-01-02 21:42:29,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目分析:

    首先观察题目中的说的序列 00 时第 ii 项是 i2i^2 这条性质,以及序列 kk 和第 22 个样例可以发现,如果一个序列 kk 有完全平方数那么肯定满足 a2+k2=b2a^2+k^2=b^2。 然后看数据大小发现 1012k1012-10^{12}\leq k\leq10^{12} 所以这题得分类讨论,可分三种,如下。

    • 如果 k=0k=0 直接输出 00
    • 如果 k1k\ge1 就用枚举法,枚举从 k\sqrt{k} 一直到 11 就好了。
    • 如果 k1k\leq-1 先用和 k1k\ge1 一样的方法最后再取相反值。

    参考代码:

    #include <bits/stdc++.h>
    using namespace std;
    long long k;
    int main()
    {
    	cin>>k;
    	if(k==0){
    		cout<<0;
    		return 0; 
    	}
    	else{
    		for(int i=sqrt(abs(k));i>=1;i--){
    			if(k%i==0&&i%2==(abs(k)/i)%2){
    				if(k<0)cout<<(-k/i-i)/2;
    				else cout<<(k/i+i)/2;
    				return 0;
    			}
    		}
            
    	}
    	cout<<"none";
    	return 0;
    }
    

    完结撒花。

    • 1

    信息

    ID
    11242
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者