zoukankan      html  css  js  c++  java
  • hdu-2685 I won't tell you this is about number theory(数论)

    题目链接:

    I won't tell you this is about number theory

    Problem Description
     
    To think of a beautiful problem description is so hard for me that let's just drop them off. :)
    Given four integers a,m,n,k,and S = gcd(a^m-1,a^n-1)%k,calculate the S.

     
    Input
     
    The first line contain a t,then t cases followed.
    Each case contain four integers a,m,n,k(1<=a,m,n,k<=10000).
     
    Output
     
    One line with a integer S.
     
    Sample Input
    1
    1 1 1 1
     
    Sample Output
    0
     
    题意
     
    求gcd(a^m-1,a^n-1)%k的值;
     
    思路
     
    有定理gcd(a^m-b^m,a^n-b^n)=a^gcd(n,m)-b^gcd(n,m);
    所以 gcd(a^m-1,a^n-1)%k == (a^gcd(n,m)-1)%k;
     
    AC代码
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    //const LL mod=1e9+7;
    const int N=1e5+6;
    int gcd(int x,int y)
    {
            if( y == 0 )return x;
            return gcd( y,x%y );
    }
    int fastpow(int x,int y,int z)
    {
        int s = 1, base = x;
        while(y)
        {
            if(y&1)
            {
                s *= base;
                s %= z;
            }
            base *= base;
            base %= z;
            y = (y>>1);
        }
        return s;
    }
    int fun( int x,int y,int z,int mod)
    {
        int temp = gcd( y, z);
        return (fastpow(x,temp,mod)-1+mod)%mod;
    }
    int main()
    {
        int t;
        scanf( "%d",&t );
        int a,n,m,k;
        while( t -- )
        {
            scanf( "%d%d%d%d",&a,&n,&m,&k );
            printf( "%d
    ",fun( a, n, m, k));
        }
        return 0;
    }
     
  • 相关阅读:
    HBase 超详细介绍
    写在之前
    【CF】38E Let's Go Rolling! (dp)
    [CF] E. Camels
    CF9D How many trees? (dp)
    [CF] 8C Looking for Order
    CF dp 题(1500-2000难度)
    NOIP原题板刷
    Codeforces Round #595 (Div. 3) 题解
    CSP-S2019 停课日记
  • 原文地址:https://www.cnblogs.com/zhangchengc919/p/5440527.html
Copyright © 2011-2022 走看看