2017 Multi-University Training Contest 3 solutions 1008 RXD and math

来源:互联网 发布:海洛因在淘宝的名称 编辑:程序博客网 时间:2024/05/16 11:51
注意到一个数字xx必然会被唯一表示成a2×ba2×b的形式.其中∣μ(b)∣=1μ(b)=1。 所以这个式子会把[1,nk][1,nk]的每个整数恰好算一次. 所以答案就是nknk,快速幂即可. 时间复杂度O(logk).O(logk)O(logk).





////  main.cpp//  RXD and math////  Created by wenhan on 2017/8/7.//  Copyright © 2017年 wenhan. All rights reserved.//#include <iostream>#include <cstdio>using namespace std;const long long mmax=1e9+7;int main() {    long long n,k;    int count=1;    while (scanf("%lld%lld",&n,&k)!=EOF) {        long long s=1;        while (k) {            if(k%2==1)            {                s=((s%mmax)*(n%mmax))%mmax;                k--;            }            n=((n%mmax)*(n%mmax))%mmax;            k=k/2;        }        printf("Case #%d: %lld\n",count++,s%mmax);    }    // insert code here...    //std::cout << "Hello, World!\n";    return 0;}





阅读全文
1 0