数论-完全平方数的一些小性质
相邻两个数的平差差是相邻两个数的和。再用一个前缀和的小优化即可。
·
完全平方数的判定:
-
偶指奇因:
- 分解质因数后质因数的指数都是偶数
- 因数的个数有奇数个。
-
平方数的末尾
0、1、4、5、6、9 -
平方数的余数
-
平方差的特征
a 2 − b 2 = ( a + b ) ∗ ( a − b ) a^2-b^2=(a+b) * (a-b) a2−b2=(a+b)∗(a−b)
a + b 和 a − b 的奇偶性一致 a+b和a-b的奇偶性一致 a+b和a−b的奇偶性一致
奇偶性一致在数学上的表示: X − Y = 偶数 奇偶性一致在数学上的表示:X-Y=偶数 奇偶性一致在数学上的表示:X−Y=偶数
( a + b ) − ( a − b ) = 2 b ,为偶数 (a+b)-(a-b)=2b,为偶数 (a+b)−(a−b)=2b,为偶数
相邻两个数的平差差是相邻两个数的和
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 ) 3 、5、 (7、 8、 9) 、(11、 12、 13) (15 、16、17) 3、5、(7、8、9)、(11、12、13)(15、16、17)
( 4 k − 1 、 4 k 、 4 k + 1 ) (4k-1、4k、4k+1) (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;
}
更多推荐
所有评论(0)