2 条题解

  • 0
    @ 2025-9-10 17:14:07

    众所周知:

    • 0=02−020=0^2-0^2。
    • 4k=(k+1)2−(k−1)24k=(k+1)^2-(k-1)^2。
    • 2k+1=(k+1)2−k22k+1=(k+1)^2-k^2。
    • 对于 n=4k+2n=4k+2 无解。
    • 以上式子中 kk 为非负整数。

    直接分情况讨论即可。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    	freopen("sd.in", "r", stdin);
    	freopen("sd.out", "w", stdout);
    	int T;
    	cin >> T;
    	while (T--)
    	{
    		long long n;
    		cin >> n;
    		if (!n)
    		{
    			cout << "0 0" << endl;
    			continue;
    		}
    		switch (n % 4)
    		{
    			case 0:
    			{
    				cout << n / 4 + 1 << ' ' << n / 4 - 1 << endl;
    				break;
    			}
    			case 2:
    			{
    				cout << "-1 -1" << endl;
    				break;
    			}
    			default:
    			{
    				cout << n / 2 + 1 << ' ' << n / 2 << endl;
    				break;
    			}
    		}
    	}
    	return 0;
    }
    

    [Sleeping Cup #5 / CTFPC-4th] Square Difference

    信息

    ID
    156
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    52
    已通过
    12
    上传者