结论题3道

※见多识广※
结论来源于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,否则为该因子

//此处应有代码

不更了,写到纸质文件比较好

posted @ 2018-02-22 18:18  Caturra  阅读(181)  评论(0编辑  收藏  举报