[Exam]10.26 T104923 魔法部落

本文深入解析了一道结合等比数列求和与快速幂算法的编程题,详细阐述了等比数列的基本公式及其在具体问题中的应用,并提供了完整的代码实现,适合初学者理解和掌握。

Date:2019/10/26

在这里插入图片描述
→Perfect−Begining\to Perfect- BeginingPerfectBegining
这道题是等比数列求和,再加上快速幂的板子;
其实挺简单的,就是当时做题的时候没有看懂最后一行

Math

先祭上等比数列求和的公式

  • 定义式:anan−1=q(n≥2,an−1≠0,q≠0\frac {a_n}{a_{n-1}} = q(n\geq 2, a_{n-1} \not = 0,q\not= 0an1an=q(n2,an1=0,q=0
  • 通项公式:an=a1×qn−1a_n = a_1\times q^{n-1}an=a1×qn1
  • 求和公式
    Sn=n∗a1(q≠1)S_n = n *a_1(q\not= 1)Sn=na1(q=1)
    Sn=a1(1−qn)1−qS_n= \frac {a_1(1-q^n)} { 1-q}Sn=1qa1(1qn)

而在这道题中,a1a_1a1是给定的,是1;
qnq_nqn也可以通过快速幂的板子来实现;

所以把已知条件带入求和公式,正好和题目给定的条件符合(我就说怎么原来不知道给定的是什么意思

1a(modp)=ap−2(modp)\frac {1}{a}(mod p) = a^{p-2}(mod p)a1(modp)=ap2(modp)
12(mod 1e9+7)=a1e9+7−2(mod 1e9+7)\frac {1}{2}(mod\:1e9+7) = a^{1e9+7-2}(mod\:1e9+7) 21(mod1e9+7)=a1e9+72(mod1e9+7)
=500000004  mod  1e9+7= 500000004 \;mod \; 1e9+7=500000004mod1e9+7

AC code

啥都不说了,我太菜了
水题都切不了,等比公式都不知道

//Author:PhilFan;
//等比数列求和公式+快速幂板子题 
#include<bits/stdc++.h>
using namespace std;
const long long mod = 1e9+7;
int n;
long long ans = 1,a;
void quick(){
	long long tmp = 3;
	while(n>0){
		if(n&1)	ans *= (ans*tmp) % mod;
		tmp = (tmp*tmp) % mod;
		n >>= 1;
	}
} 
int main()
{
	scanf("%d",&n);
	n+=1;
	quick();
	a = (500000004 % mod) * (ans-1) % mod;
	printf("%lld",a);
	return 0;
}

→Perfect Ending\to Perfect \:EndingPerfectEnding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值