zoukankan      html  css  js  c++  java
  • code force 1228C

    算是一题普通数论+思维题吧。

    大概很多人是被题意绕晕了。

    思路:

       首先常规操作求出X的质因子。

       然后题目要求的是,X的每个质因子p,在g(i,p)的连乘。i∈[1,n];

       我们转换下思维,不求每一个g(i,p)中最终是哪些 p的幂次,而是反求 每个p的幂次对结果的贡献。

       显而易见,p^k在1~n的出现的次数就是  [n/(p^k)].

       这样枚举所有质因子,计算中再利用快速幂取模便可以得到答案

    //#pragma comment(linker, "/STACK:1024000000,1024000000")
    //#pragma GCC optimize(2)
    #include <bits/stdc++.h>
    
    using namespace std;
    typedef double dou;
    typedef long long ll;
    typedef pair<int, int> pii;
    typedef map<int, int> mii;
    
    #define pai acos(-1.0)
    #define M 200007
    #define inf 0x3f3f3f3f
    #define mod 1000000007
    #define IN inline
    #define W(a) while(a)
    #define lowbit(a) a&(-a)
    #define left k<<1
    #define right k<<1|1
    #define lson L, mid, left
    #define rson mid + 1, R, right
    #define ms(a,b) memset(a,b,sizeof(a))
    #define Abs(a) (a ^ (a >> 31)) - (a >> 31)
    #define random(a,b) (rand()%(b+1-a)+a)
    #define false_stdio ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
    
    ll x, n;
    ll ans = 1;
    vector<ll>num;
    
    void init(ll tmp) {
        for (ll i = 2; i * i <= tmp; i++) {
            if (tmp % i == 0) {
                num.push_back(i);
                W(tmp % i == 0)tmp /= i;
            }
        }
        if (tmp != 1)num.push_back(tmp);
    }
    
    ll Pow(ll base, ll sup) {
        ll sum = 1;
        W(sup) {
            if (sup & 1)sum = (sum * base) % mod;
            sup >>= 1;
            base = (base * base) % mod;
        }
        return sum % mod;
    }
    
    int main() {
        false_stdio;
        cin >> x >> n;
        init(x);
        for (auto p : num) {
            ll tmp = 1;
            W(tmp <= n / p) {//条件应该理解为  tmp*p<=n,而n%p==0,所以可以利用除法防止爆精度
                tmp *= p;
                ans = (ans * Pow(p, n / tmp)) % mod;
            }
        }
        cout << ans << endl;
        return 0;
    }
  • 相关阅读:
    iOS开发——iOS10升级极光推送SDK、友盟分享SDK
    iOS动画——弹窗动画(pop动画)
    iOS动画——文字晃动
    iOS安全——代码混淆&反编译
    iOS学习——iOS视频和推荐网站
    iOS开发——消息推送跳转
    iOS开发——时间格式类
    iOS开发——锁屏监听
    iOS开发——毛玻璃透明
    iMAC——全新重装Mac系统
  • 原文地址:https://www.cnblogs.com/caibingxu/p/11614128.html
Copyright © 2011-2022 走看看