码迷,mamicode.com
首页 > 其他好文 > 详细

[合集]数论小结论(五分钟弃坑系列)

时间:2018-02-22 21:25:45      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:out   stream   组合   math   否则   题意   cin   --   int   

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

//此处应有代码

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

[合集]数论小结论(五分钟弃坑系列)

标签:out   stream   组合   math   否则   题意   cin   --   int   

原文地址:https://www.cnblogs.com/caturra/p/8459766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!