HT-018 Div3 構造 題解 [ 黃 ] [ 數學 ] [ 結論 ]

KS_Fszha發表於2024-08-01

構造:結論題,gcy數競大佬tql%%%orz。

結論

先放結論:如果 \(x \bmod 4=2\) ,那麼 \(x\) 無法被表示為 \(a^2-b^2\) 的形式;除此之外的其他數都可以。

證明

\(a^2-b^2\) 因式分解,得 \(x=(a+b)(a-b)\)

\(x \bmod 2=1\)

包含 \(x \bmod 4=1\)\(x \bmod 4=3\) 的情況。

嘗試構造 :

\[\begin{cases} x+y=n \\x-y=1\end{cases} \]

解得:

\[\begin{cases} x=\frac{n+1}{2} \\y=\frac{n-1}{2}\end{cases} \]

因為 \(x\) 為奇數,所以 \(x,y\) 皆為整數,成立。

\(x \bmod 4=0\)

\(4\) 提出來:

\[x=4t=(x+y)(x-y) \]

所以設 \(x+y=2m,x-y=2k\)\(m,k\) 皆為整數 。

則解得

\[\begin{cases} x=m+k \\y=m-k\end{cases} \]

顯然 \(x,y\) 為整數,成立。

\(x \bmod 4=2\)

\(2\) 提出來:

\[x=2t=(x+y)(x-y) \]

所以設 \(x+y=2m,x-y=k\)\(m,k\) 皆為奇數 。因為 \(2m\) 已經是偶數了,如果 \(k\) 還是偶數,那麼就 \(x \bmod 4=0\),與題設矛盾,不成立 。

則解得

\[\begin{cases} x=\frac{2m+k}{2}=m+\frac{k}{2} \\y=\frac{2m-k}{2}=m-\frac{k}{2}\end{cases} \]

顯然 \(x,y\) 為不是整數,不成立。

因此得證。

程式碼細節

注意 \(l,r\) 都是負數時加特判,把他變成正數的情況。

因為 c++ 在對負數取模時,會先把負數去掉,把他當成正數後取模,最後再加上負號。和我們先模在加再模的方式不同。

程式碼

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
ll t,l,r;
int main()
{
	freopen("construct.in","r",stdin);
	freopen("construct.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>t;
	while(t--)
	{
		cin>>l>>r;
		ll rg=r-l+1;
		if(r<0)
		{
			l*=-1;
			r*=-1;
			swap(l,r);
		}
		if(r%4==0)r-=2;
		else if(r%4==1)r-=3;
		else if(r%4==3)r-=1;
		cout<<rg-ll(ceil((r-l+1)/4.0))<<endl;
	}
	return 0;
}

相關文章