首页 > 其他分享 >闲话 5.9 湖南省集 为了你唱下去

闲话 5.9 湖南省集 为了你唱下去

时间:2024-05-09 16:26:57浏览次数:26  
标签:int 5.9 && 闲话 d1 d2 湖南省 5c 3d

同步考场上被卡常乐,有点难绷。

image

和题解不太一样,但是比较爆。

令 \(a=\frac yx,b=\frac zx\),则:

\[a,b\in \Q,b^2+(a-1)b+1-a-a^2=0 \]

这里的想法是解出有理数 \(b\)。有:

\[\Delta=\sqrt{5a^2+2a-3} \]

那么 \(\sqrt{5a^2+2a-3}\in \Q\)。设 \(a=\frac cd,c,d\in \Z^+,c\bot d\),得到:

\[\sqrt{(5c-3d)(c+d)}\in\Z \]

注意到 \(\gcd((5c-3d),(c+d))\mid (5c-3d)+3(c+d)=8c\),并且 \(\gcd((5c-3d),(c+d))\mid -(5c-3d)+5(c+d)=8d\),那么

\[\gcd((5c-3d),(c+d))\mid (8c,8d)=8 \]

弱化一下条件,可以设 \(c+d=2^{k_1}d_1^2,5c-3d=2^{k_2}d_2^2\),其中 \(k_1=k_2\in \{0,1\},d_1,d_2\in \Z\)。然后消掉 \(k\):

\[a=\frac cd=\frac{3d_1^2+d_2^2}{5d_1^2-d_2^2} \]

解一下 \(b\)。

\[b=\frac{d_1^2-d_2^2\pm 4d_1d_2}{5d_1^2-d_2^2} \]

那么可以得出原问题的解:

\[x'=5d_1^2-d_2^2,y'=3d_1^2+d_2^2,z'=d_1^2-d_2^2\pm 4d_1d_2 \]

设 \(g=\gcd(x,y,z)\),则 \(x=x'/g,y=y'/g,z=z'/g\)。

引理:若 \(d_1\bot d_2\)(显然只需要考虑这些)

\[(x,y)=(y,z)=(x,z)\in \{1,4\} \]

类似于前面 \(\gcd((5c-3d),(c+d))\mid8\) 的证明即可。

那么:

\[3d_1^2+d_2^2=y'\le gn\le 4n \]

所以 \(d_1,d_2=O(\sqrt n)\)。这样,我们枚举 \(d_1,d_2\) 就可以预处理 \(1\sim n\) 的所有答案。有点小小的卡常(当时我甚至求了 \(\gcd(x,y,z)\))。

#include<bits/stdc++.h>
using namespace std;
inline int sqr(int x){return x*x;}
const int P=1.5e6;
inline int gcd(int a,int b){
	while(max(a,b)>P){if(a<b)swap(a,b);if(!b)return a;a%=b;}
	int az=__builtin_ctz(a),bz=__builtin_ctz(b),z=min(az,bz),dif;
	b>>=bz;
	while(a){
		a>>=az;
		dif=b-a;
		az=__builtin_ctz(dif);
		if(a<b) b=a;
		if(dif<0) a=-dif;
		else a=dif;
	}
	return b<<z;
}
const int maxn=2e7+5;
int s[maxn],tmp;
inline int _max(int x,int y){return x>y?x:y;}
#define endl "\n"
signed main(){
	int n=2e7;
	for(int d1=0;d1*d1*3<=4*n;d1++){
		int I=1;
		if(d1>0&&d1%2==0)I=2;
		bool s3=0,s5=0,s7=0;
		if(d1>0&&d1%3==0)s3=1;
		if(d1>0&&d1%5==0)s5=1;
		for(int d2=1;d2*d2<=4*n-3*d1*d1&&d2*d2<=5*d1*d1;d2+=I){
			if(s3&&d2>0&&d2%3==0)continue;
			if(s5&&d2>0&&d2%5==0)continue;
			int D1=d1*d1,D2=d2*d2;
			if(d1>0&&d2>0&&gcd(d1,d2)>1)continue;
			int x=5*D1-D2,y=3*D1+D2,z=D1-D2+4*d1*d2;
			if(x>4*n||y>4*n||x<=0||y<=0||z<=0)continue;
			int g=1;if(x%4==0)g=4;
			x/=g,y/=g,z/=g;
			if(x>n||y>n||z>n)continue;
			s[_max(x,y)]++;
			z=(D1-D2-4*d1*d2);if(z<=0)continue;
			s[_max(x,y)]++;
		}
	}
	for(int i=1;i<=n;i++)s[i]+=s[i-1];
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int t;cin>>t;
	while(t--){
		int m;cin>>m;
		if(m<=5){
			//1 1 1
			//5 3 1
			if(m==1)cout<<1<<endl;
			if(m==2)cout<<1<<endl;
			if(m==3)cout<<1<<endl;
			if(m==4)cout<<1<<endl;
			if(m==5)cout<<2<<endl;
		}else{
			int dp=4;
			if(m>=5)dp=1;
			cout<<s[m]+dp<<endl;
		}
	}
	return 0;
}
//From Koala

标签:int,5.9,&&,闲话,d1,d2,湖南省,5c,3d
From: https://www.cnblogs.com/british-union/p/18182532

相关文章

  • 闲话
    感觉最近太摆了,每天很空虚,不愿意搞应试那一套,还是得学点东西。还是准备一边学tcs一边搞搞oi好打icpc,现在水平下滑严重,而且身边没有人在认真搞,要么就是靠高中的底子,要么都是卷GPA卷科研,但其实我不大想卷这玩意,反正感觉来USTC很失败就对了。还是想不通自己为什么这么失败,可能我更适......
  • VS2017+QT5.9.1 自定义loggerControl
    创建自定义类LoggerControl继承QListWidget#pragmaonce#include<QListWidget>#include"Helper.h"#include<QTime>#include<QPainter>classLoggerControl:publicQListWidget{Q_OBJECTpublic:LoggerControl(QWidget*paren......
  • 闲话 - 20240501
    https://codeforces.com/contest/1967熬夜打的一场CF,体验还是蛮不错的。前面四个题(A,B1,B2,C)比较简单,但是有一定的层次感,想来对于水平不那么高的选手体验也还可以;D题有一种很奇妙的感觉,做法很简单,没有什么高级的东西,有点巧妙但又不那么巧妙;E题这个计数题还是很漂亮的,这个模型......
  • 闲话 4.29:伯特兰定理及另一道题
    伯特兰公设任意\(\ge4\)的正整数\(n\)满足:存在一个质数\(p\in(n,2n)\)。以下\(p\)均取质数,\(p_i\)表示第\(i\)个质数。引理1:\[\prod_{p\len}p\le4^n,n>1\]首先有一个想法:\[\ln\prod_{p\len}p\le\pi(n)\lnn\simn\len\ln4\]这些放缩是相当松的,因为......
  • 2024-04-20 闲话
    最近读到了这么一首诗,最后一句写得很有意境。酬乐天咏老见示人谁不顾老,老去有谁怜。身瘦带频减,发稀冠自偏。废书缘惜眼,多炙为随年。经事还谙事,阅人如阅川。细思皆幸矣,下此便翛然。莫道桑榆晚,为霞尚满天。总有人说老了老了,水平不行了。其实这样的人实力都是非常强劲的。......
  • 2024-04-16 闲话
    今天因为https://mp.weixin.qq.com/s/vEcWmJCA8GP9h311viSJwQ被很多人辱骂了。然后简单思考了一下如何回应这种问候,然后自然想到了从https://m.cyol.com/gb/articles/2023-04/20/content_X5eNg6HpYg.html入手使用格林公式解决。具体格林公式如下:......
  • 4.13 闲话
    TopCoder13696Morphling前置知识:泰勒展开,符号化方法,无标号无根树计数我们考虑我们目前序列为\(a\),然后从每个\(i\toa_i\)连边,得到一颗基环树。我们考虑一次\((x,y)\)的影响,原本连向\(x\)的边连向了\(y\),原本连向\(y\)的边连向了\(x\),而\(x,y\)连向的边互换了,我......
  • 闲话 4.12——对 Worpitzky 恒等式的几个证明
    \[\sum_{i}\left\langle\begin{matrix}n\\i\end{matrix}\right\rangle\binom{i+k}{n}=k^n\]通俗的证明(具体数学的习题6.15)是使用归纳法。我们也可以对后面几个式子用二项式反演证明,而有如下过程:\[\begin{aligned}z^n&=\sum_{i=0}^n{n\bracei}z^\underlinei\\&=\sum_{i=0}......
  • 2024-04-09 闲话
    Iattendedaclasscalledglobaloutlookandpersonaldevelopmentyesterdayandthelecturegiverstudiedin43->sjzez(HEpho1=withrecommandedstudentpolicy)->THUschoolofphysics->UCSDforphd->unibritishcolumbiaforpostdoc.H......
  • 2024-04-06 闲话
    同学朋友圈改了一首诗,原作是:曾巩写得实在是有水平。其实太久不读诗之后,看看这种状物诗,触动还是蛮强的。今天晚上做实验的时候突然融会贯通了很多事情,之前看到的很多事情有了motivation,这种感觉实在是太幸福了。但是还是有更多的事情我没有想明白,所以非常自闭,去相亲相爱一家爷......