• "科林明伦杯"哈尔滨理工大学第八届程序设计竞赛——Hrbust -2370 SUM(快速幂)


    Description
    Calculate MOD 1,000,000,007.(1≤n≤1e5, 1≤d≤1e9)
    这里写图片描述

    Input
    The first line is an integer t(1≤t≤100), which is the number of test cases.

    Then t lines follow. Each line contains two numbers n and d.

    Output
    T lines, which are the answers.

    Sample Output
    3

    2 3

    3 2

    4 1

    Hint
    9

    14

    10

    题意:给出x和d,对x从1到x的d次方求和
    就是快速幂模板。。。加和都是用for的O(n)的跑一边。。。一开始第一题做这个超时了,就慌了,根本想不到任何优化的方法,想预处理也不可能。后面先写其他题了。最后实在没办法了,去掉了两个看似多余的取模又交了一次,竟然过了。。。虽然这题给了10秒,轮取模的耗时。。。

    #include<stdio.h>
    #include<string.h>
    #define LL long long
    using namespace std;
    const LL MOD=1000000007;
    LL a[100008];
    LL poww(LL a,LL b)
    {
        LL ans=1;
        while(b)
        {
            if(b&1)ans=(ans*(a%MOD))%MOD;///多次取模会超时
            a=(a*(a%MOD))%MOD;
            b>>=1;
        }
        return ans;
    }
    int main()
    {
        int t;
        LL n,d;
        scanf("%d",&t);
        while(t--)
        {
            LL sum=1;
            scanf("%lld%lld",&n,&d);
            for(int i=2; i<=n; i++)
            {
                sum=(sum+poww(i,d)%MOD)%MOD;///多次取模会超时
            }
            printf("%lld
    ",sum);
        }
    }
    
  • 相关阅读:
    136-如何访问redis数据库
    135-如何实现result风格
    134-SpringMVC中的值,会有一个默认值
    133-this知识点
    132-SpringBoot中的请求方法
    034-405是什么错误?
    131-逆向工程配置文件
    SQL---实验一
    《将博客搬至CSDN》
    正则表达式1---QQ号合法性判断
  • 原文地址:https://www.cnblogs.com/kuronekonano/p/11135815.html
Copyright © 2020-2023  润新知