zoukankan      html  css  js  c++  java
  • 【JZOJ4229】学习神技【数论,数学】

    题目大意:

    题目链接:https://jzoj.net/senior/#main/show/4229
    求首项为a1a_1,公比为qq,项数为nn的等比数列的和。


    思路:

    众所周知,n1n-1项的等比数列和的公式是
    {a1×(qn1)q1(q1)a1×n(q=1)left{egin{matrix} frac{a_1 imes (q^n-1)}{q-1}(q eq 1) \ a_1 imes n(q=1)end{matrix} ight.

    证明:
    若这个等比数列为a1+a1×q1+a1×q2+...+a1×qna_1+a_1 imes q^1+a_1 imes q^2+...+a_1 imes q^n
    S=a1+a1×q1+a1×q2+...+a1×qnS=a_1+a_1 imes q^1+a_1 imes q^2+...+a_1 imes q^n
    qS=a1×q1+a1×q2+...+a1×qn+a1×qn+1qS=a_1 imes q^1+a_1 imes q^2+...+a_1 imes q^n+a_1 imes q^{n+1}
    相减得qSS=a1×q1+a1×q2+...+a1×qn+a1×qn+1a1a1×q1a1×q2...a1×qnqS-S=a_1 imes q^1+a_1 imes q^2+...+a_1 imes q^n+a_1 imes q^{n+1}-a_1-a_1 imes q^1-a_1 imes q^2-...-a_1 imes q^n
    简化得(q1)S=a1×qn+1a1(q-1)S=a_1 imes q^{n+1}-a_1
    移向得S=a1×(qn+1a1)q1S=frac{a_1 imes (q^{n+1}-a_1)}{q-1}
    证毕。

    利用快速幂计算qnq^n,再用逆元求答案即可。


    代码:

    #include <cstdio>
    #include <cstring>
    using namespace std;
    typedef long long ll;
    
    const ll MOD=1000000007ll;
    int T;
    ll n,q,a,k,Read,ans;
    char ch;
    
    ll read()
    {
    	Read=0;
    	ch=getchar();
    	while (ch<'0'||ch>'9') ch=getchar();
    	while (ch>='0'&&ch<='9')
    		Read=(Read<<3)+(Read<<1)+ch-48,ch=getchar();
    	return Read;
    }
    
    void write(ll x)
    {
    	if (x>9) write(x/10);
    	putchar(x%10+48);
    }
    
    ll power(ll x,ll m)  //快速幂
    {
    	ll ans=1;
    	while (m)
    	{
    		if (m&1) ans=ans*x%MOD;
    		x=x*x%MOD;
    		m>>=1;
    	}
    	return ans;
    }
    
    int main()
    {
    	T=read();
    	while (T--)
    	{
    		a=read(),q=read(),n=read();
    		if (q==1) write(a*(n%MOD)%MOD);  //特判
    		else
    		{
    			k=power((q-1)%MOD,MOD-2);  //求逆元
    			ans=a%MOD*(power(q%MOD,n)-1)%MOD*k%MOD;
    			write(ans);
    		}
    		putchar(10);
    	}
    	return 0;
    }
    
  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/11998388.html
Copyright © 2011-2022 走看看