首页 > 其他分享 >数论

数论

时间:2023-01-17 16:35:30浏览次数:53  
标签:平方 数论 res int beta ans alpha

Problem - D - Codeforces

大致题意

给你一个长度为\(n\)的数列,让你给数列中每一个数都加上一个任意数,使得这个时候数列中的平方数最多并输出平方数的数量

显然我们可以知道,我们总可以加上一个任意数使得存在一个数是平方数

再来看数据范围

he first line contains the number of test cases \(t\) (\(1≤t≤50\)).

The first line of each test case contains a single integer \(n\) (\(1≤n≤50\)) — the size of the set.

显然我们可以使用\(O(n^4)\)以上时间复杂度的做法

下面开始分析:

假设存在一个 \(x\) 使得存在两个数列中的数 \(a_i,a_j\)满足 \(a_i+x\) \(a_j+x\)都为平方数(\(a_i\ge a_j\))

此时满足 \(a_i+x=A^2\) \(a_j+x=B^2\)

两式相减得 \(a_i-a_j=A^2-B^2\)

设 \(p=a_i-a_j\)

则上式变为 \(p=A^2-B^2\)

​ \(p=(A+B)×(A-B)\)

设 \(\alpha\) 是 \(p\) 的较大的因子\((A+B)\),$ \beta$ 是 \(p\) 的较小的因子\((A-B)\)

则 \(p=\alpha×\beta\)

∵ \(A=\frac{\alpha+\beta}{2}\) \(B=\frac{\alpha-\beta}{2}\)

∴ \(\alpha+\beta\)为偶数 \(\alpha-\beta\)也为偶数

∴ \(x=B^2-a_j\)

由此便得到了一个 \(x\) 带入计算可得平方数的大小

因为(\(1≤n≤50\))由此可得一两千个 \(x\) 便可以一一带入计算得到最优解

key code

const int N=2e5+10;
int n,m,k,a[N],b[N],p[N];
int issqrt(int n){
	int res=sqrt(n);
	return res*res==n;
}
int check(int x){
	int res=0;
	up(1,n)res+=issqrt(a[o]+x);
	return res;
}
void solve(){
	//try it again.
	cin>>n;
	up(1,n)cin>>a[o];
	int ans=check(0);
	if(!ans)ans^=1;
	fup(i,1,n){
		fup(j,i+1,n){
			int d=(a[j]-a[i]);
			for(int x=1;x*x<=d;x++){
				if(d%x==0){
					int y=d/x;
					if((x+y)&1||(x-y)&1)continue;
					int B=(x+y)>>1;
					int A=(x-y)>>1;
					if(B*B>=a[j]){
						ans=max(ans,check(B*B-a[j]));
					}
				}
			}
		}
	}
	cout<<ans<<endl;
}

标签:平方,数论,res,int,beta,ans,alpha
From: https://www.cnblogs.com/liangqianxing/p/17058102.html

相关文章

  • 数论学习笔记(自留向)
    前言数学我的一生之敌(本篇blog基本没有证明,你杠我就是我对,我们不生产知识,我们只是知识的搬运工)(不写证明才不是因为笔者\(\LaTeX\)用得不熟呢)裴蜀定理结论对......
  • 数论
    ......
  • 数论学习笔记
    逆元定义存在$a\timesx\equiv1\pmod{m}$,我们称\(x\)为\(a\)的逆元。完全剩余系假设\(1\toP-1\)都存在逆元,我们则称他为一个完全剩余系。当......
  • Codeforces Round #834 (Div. 3) D. Make It Round(贪心/数论)
    https://codeforces.com/contest/1759/problem/D题目大意:给定一个数字n,要求扩大至多m倍,求最大的并且最多0的数字。input106115431354161005012345264......
  • 数论笔记-整除
    目录整除整除的定义与基本性质素数素数的定义与基本性质素数判定试除法\(kn+i\)法预处理法Miller-Rabin素性测试素数筛法埃氏筛欧拉筛(线性筛)反素数反素数的定义与基本性质......
  • 数论笔记
    目录数论模运算相关龟速乘快速幂矩阵快速幂整除整除的定义与性质素数素数的定义与性质素数判定试除法\(kn+i\)法预处理法Miller-Rabin素性测试素数筛法埃氏筛欧拉筛(线性筛......
  • 数论导论
    数论导论快速幂求\(a^b\bmodp\)的结果。我们可以构造如下算法:\(a^b=\begin{cases}(a^{\fracb2})^2&\texttt{biseven}\\a(a^{\frac{b-1}2})^2&\texttt{bisodd}......
  • 数论分块
    数论分块数论分块可以快速计算一些含有除法向下取整的和式(即形如\(\sum_{i=1}^{n}f(i)g\left(\left\lfloor\dfrac{n}{i}\right\rfloor\right)\)的和式)。当可以......
  • 【学习笔记 / 长期更新】OI 中的数论
    -Preface0.1前言本文意为作者从\(0\)开始学习数论,同时也对OIWiki的某些内容做补充说明。如果你看到有一些小标题没有内容,很正常,作者\(\color{white}\small\textb......
  • 寒假集训——基础数论
    开篇\(————\sum\)的本质\(\sum\)其实可以理解为for循环例如$$\sum_{i=1}^{n}i$$其实就是代码中intans=0;for(inti=1;i<=n;i++)ans+=a[i];ans的值求......