hdu-6189- Law of Commutation

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6189

题目大意 :在1到m的范围中有多少个b满足a^{b}\equiv b^{a}(mod m)),其中m=2^{n}。(题目要求输入n,a)

题解思路:打表,找出规律。

 hdu-6189- Law of Commutation_第1张图片

ac代码:

#include
#include
#include
#include
using namespace std;
typedef long long ll;
ll pow1(ll a, ll n)    //快速幂 a^n 
{
    ll ans = 1;
    while(n)
    {
        if(n & 1) ans*=a ;          
        a*=a;
        n/=2;
    }
    return ans;
}
ll pow2(ll a, ll n,ll mod)    //快速幂 a^n % mod
{
    ll ans = 1;
    while(n)
    {
        if(n & 1) ans = ans * a % mod;          //若不取模就去掉p
        a = a * a % mod;
        n /=2;
    }
    return ans;
}
int main()
{
	ll n,a;
    while(cin>>n>>a)
    {
        if(a%2==1)//a是奇数,只有一种 
        {
            cout<<"1"<

 

你可能感兴趣的:(c++语言,数论)