• noip模拟赛 算


    【问题背景】
    zhx 帮他妹子做数学题。
    【问题描述】
    求:


    N=3, M=3, 这个值为 1^1+1^2+1^3+2^1+2^2+2^3+3^1+3^2+3^3=56

    【输入格式】
    仅一行, 包含两个数 N M.
    【输出格式】
    仅一行, 包含所求的答案 mod 10^9 + 7 的值。
    【样例输入】
    3 3
    【样例输出】
    56
    【数据范围与规定】
    对于50%的数据, 所有

    对于100%的数据, 所有

    分析:50分暴力就是枚举+快速幂喽,100分的话肯定不能两层循环的枚举,固定i,看j的变化,就会发现这其实就是一个等比数列,对每个i进行一次等比数列求和就可以了.

    #include <queue>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    const int mod = 1e9 + 7;
    
    typedef long long ll;
    
    int n, m;
    ll ans;
    
    ll qpow(ll a, ll b)
    {
        ll res = 1;
        while (b)
        {
            if (b & 1)
                res = (res * a) % mod;
            a = (a * a) % mod;
            b >>= 1;
        }
        return res; 
    }
    
    int main()
    {
        scanf("%d%d", &n, &m);
        for (int i = 1; i <= n; i++)
        {
            if (i == 1)
                ans = (ans + m) % mod;
            else
            {
                ll temp = qpow(i, m) - 1;
                ll temp2 = temp * qpow(i - 1, mod - 2) % mod;
                ans = (ans + i * temp2 % mod) % mod;
            }
        }
        printf("%lld
    ", ans);
    
        return 0;
    }



  • 相关阅读:
    13.线性回归
    12.scikit-learn中的Scaler
    11.数据归一化
    oracle之二表的几种类型
    oracle之二表和表空间的关系
    oracle之二数据字典表和动态性能视图
    oracle之二检查点
    oracle之二管理undo
    oracle之二归档日志
    oracle之二日志挖掘log miner
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7735087.html
Copyright © 2020-2023  润新知