首页 > 其他 > 详细

快速幂的题

时间:2019-03-31 00:30:34      阅读:157      评论:0      收藏:0      [点我收藏+]

技术分享图片

#include <bits/stdc++.h>
using namespace std;


long long powM(long long a, long long b, long long mode)
{
    long long sum = 1;
    a = a % mode;
    while (b > 0) {
        if (b % 2 == 1)     //判断是否是奇数,是奇数的话将多出来的数事先乘如sum
            sum = (sum * a) % mode;
        b /= 2;
        a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模
    }
    return sum;
}



int main () {
    long long n, m, k, x;
    cin >> n >> m >> k >> x;
    cout << (m * powM(10, k, n) + x) % n << endl;
}

 技术分享图片

技术分享图片

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const long long MODE = 100000007;
long long powM(long long a, long long b, long long mode)
{
    long long sum = 1;
    a %= mode;
    while (b) {
        if (b & 1)     //判断是否是奇数,是奇数的话将多出来的数事先乘如sum
            sum = (sum * a) % mode;
        b >>= 1;
        a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模
    }
    return sum;
}


int main () {
    int N;
    cin >> N;
    while (N--) {
        ll flag = 1;
        ll n, k;
        cin >> n >> k;
        if (n & 1)
            flag = - 1;
        cout << (powM(k - 1, n, MODE) % MODE + (flag * (k - 1)) % MODE) % MODE << endl;
        
    }
}

 技术分享图片

技术分享图片

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;


long long powM(long long a, long long b, long long mode)
{
    long long sum = 1;
    a %= mode;
    while (b) {
        if (b & 1)     //判断是否是奇数,是奇数的话将多出来的数事先乘如sum
            sum = (sum * a) % mode;
        b >>= 1;
        a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模
    }
    return sum;
}


int main () {
    ll a, b, c, d, e;
    cin >> a >> b >> c >> d >> e;
    ll f = powM(a, c * d, e) % e;
    ll g = powM(b, c * d, e) % e;
    cout << (f * g) % e << endl;
}

 

快速幂的题

原文:https://www.cnblogs.com/lightac/p/10629867.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!