首页 > 其他分享 >数论-完全平方数的一些小性质

数论-完全平方数的一些小性质

时间:2024-03-27 11:24:17浏览次数:23  
标签:平方 return 数论 long int ans 性质 define

完全平方数的判定:

  1. 偶指奇因:

    • 分解质因数后质因数的指数都是偶数
    • 因数的个数有奇数个。
  2. 平方数的末尾
    0、1、4、5、6、9

  3. 平方数的余数
    image

  4. 平方差的特征

\[a^2-b^2=(a+b) * (a-b) \]

\[a+b和a-b的奇偶性一致 \]

\[奇偶性一致在数学上的表示:X-Y=偶数 \]

\[(a+b)-(a-b)=2b,为偶数 \]

相邻两个数的平差差是相邻两个数的和
image

P9231 [蓝桥杯 2023 省 A] 平方差
思路就是上面平方差的特征:
再用一个前缀和的小优化即可

#include <bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define _for(i, a, b) for(int i=(a); i<(b); ++i)
#define pii pair<int, int>
#define pdd pair<double,double>
#define ll long long
#define db double
#define fs first
#define sc second
#define pb push_back
#define vi vector<int>

using namespace std;
int getji(int x){
	if(!x)	return 0;
	return (x+1)/2;
}
int getsi(int x){
	return x/4;
}

void solve() {
	int l,r;
	cin>>l>>r;
	cout<<getji(r)-getji(l-1)+getsi(r)-getsi(l-1)<<'\n';
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	solve();
	return 0;
}

G. Garage
\(3 、5、 (7、 8、 9) 、(11、 12、 13) (15 、16、17)\)
\((4k-1、4k、4k+1)\)

#include <bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define fs first
#define sc second
#define pb push_back
#define vi vector<int>
 
using namespace std;

int f(int n){
	if(n==1)	return 3;
	if(n==2)	return 5;
	n-=2;
	int ans=(n/3+(n%3!=0)+1)*4;
	if(n%3==0)	ans++;
	if(n%3==1)	ans--;
	return ans;
}

void solve() {
	int n;
	cin>>n;
	cout<<f(n)<<'\n';
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	solve();
	return 0;
}

标签:平方,return,数论,long,int,ans,性质,define
From: https://www.cnblogs.com/cxy8/p/18098334

相关文章

  • 数论分块
    文章借用: 浅谈数论分块-洛谷专栏(luogu.com)求$\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor$,其中$n$为常数。为了方便我们的研究,我使用绘图软件画出了$f(x)=\frac{7}{x}(1\leqx\leq7)$的图像,也就是一种反比例函数的图像。 因为求的值是向下取整的,显然函数$f(x)$......
  • 算法训练day50卡玛70. 爬楼梯(进阶版)Leetcode322. 零钱兑换279. 完全平方数
    57.爬楼梯(第八期模拟笔试)题目分析我们可以使用动态规划。动态规划的思想是用一个数组dp来保存到达每一级台阶的方法数。对于每一级台阶i,你可以从i-1,i-2,...,i-m级台阶爬上来(只要这些台阶的索引大于等于0),因此到达第i级台阶的方法数就是这些dp[j](i-m<=j<i)的总和。acm......
  • 关于数论
    前由于博主比较蒻尚在学习所以先鸽亿会欧拉筛Elaina'scodeintn,phi[N],prime[N],cnt;boolpri[N];voidPhi(){ mst(pri,1); phi[1]=1; for(inti=2;i<=n;i++){ if(pri[i]){ prime[++cnt]=i; phi[i]=i-1; } for(intj=1;j<=cnt;j++){ intk=i*prime[......
  • 代码随想录 Day3 数组 | LC977 有序数组的平方 & LC209 长度最小的子数组(滑动窗口))
    四、有序数组的平方题目:力扣977:有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[......
  • 数论分块
    数论分块part1数论分块是什么一道例题引入uvaH(n)题目大意是给定一个n,求\(\sum^{n}_{i=1}\lfloor\frac{n}{i}\rfloor\)如果不能用\(O(n)\)的时间复杂度来算,能用什么办法?数论分块!!!在一个特定的区间内,\(\lfloor\frac{n}{i}\rfloor\)算出的数字是一样的。如下图颜色相同部分......
  • 数论(证明)
    1.同余1.1同乘性\({\displaystylea\equivb{\pmod{m}}}\)\({\displaystylec\equivd{\pmod{m}}}\)则\({\displaystylea*c\equivb*d{\pmod{m}}}\)证明\({a=k_1m+x}\);\({b=k_2m+x}\)\({c=k_3m+y}\);\({d=k_4m+y}\)\({a*c=k......
  • (45/60)爬楼梯进阶、零钱兑换、完全平方数
    day45爬楼梯进阶卡码网:爬楼梯(第八期模拟笔试)动态规划代码实现/*总和为j总共有dp[j]种方法(可重复选取、排列)dp[j]+=dp[j-nums[i]dp[0]=1;其余为0先背包再物品,正序*/#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intmain(){......
  • 求平方根
    描述:实现函数intsqrt(intx)计算并返回x的平方根(向下取整)数据范围:\(0\lex\le2^{31}-1\),要求空间复杂度$o(1)\(,时间复杂度\)o(logx)$.示例1:输入:2返回值:1示例2:输入:2143195649返回值:46294思路:二分查找方法代码:classSolution:defsqrt(self,......
  • 数论小记
    做到就会补进来>w<\[d(ij)=\sum_{x|i}\sum_{y|j}[\gcd(x,y)=1]\]其中\(d\)是约数个数,证明如下:考虑\(x,y\)造就的\(xy=d\)的贡献,显然覆盖完全,那么我们现在需要一个\(d\)只能有一种产生贡献的方式。考虑一个质数\(p\)在\(x,y,d\)中的幂次分别为\(x',y',d'\),在\(......
  • 数论分块
    数论分块分块整除例题G-几番烟雾,只有花难护向上取整注意相减时要加上模数再取模#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#defineintlonglong#definedb(x)cout<<x<<""<<endl;#define_db(a,n)for(inti=1;i<=n;i++)......