※见多识广※
结论来源于ACdreamer
NEFU - 117 素数定理
题意:给定\(n\),求\(10^n\)范围内素数的个数的位数
当\(x\)足够大时,\(π(x)=\frac{x}{ln(x)}\)
最近做的题真是水破天际
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
ll n;
int main(){
while(cin>>n){
double ans=(double)n-log10(n)-log10(log(10));
cout<<(ll)(ans+1)<<endl;
}
return 0;
}
HDU - 2685 gcd定理
题意:求\(gcd(a^m-1,a^n-1)\)
定理:\(gcd(a^m-1,a^n-1)=a^{gcd(m,n)}-1\)
其实补上\((a-1)\)展开也是等比数列形式的,那肯定是一个\(a^x-1\)的数
更为普遍的定理也记下:对于\(a>b\),\(gcd(a^m-b^m,a^n-b^n)=a^{gcd(m,n)}-b^{gcd(m,n)}\)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll fpw(ll a,ll n,ll mod){
ll ans=1;
while(n){
if(n&1) ans=(ans*a)%mod;
n>>=1;a=(a*a)%mod;
}
return ans;
}
int main(){
ll a,m,n,k,T; cin>>T;
while(T--){
cin>>a>>m>>n>>k;
cout<<(fpw(a,gcd(m,n),k)-1+k)%k<<endl;
}
return 0;
}
HDU - 2582 gcd与组合数的定理
\(gcd({n\choose i})\)若\(n\)含有多个素因子则为1,否则为该因子
//此处应有代码
不更了,写到纸质文件比较好