[Exam]10.26 T104923 魔法部落

Date:2019/10/26

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

Math

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

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

而在这道题中, a 1 a_1 a1是给定的,是1;
q n q_n qn也可以通过快速幂的板子来实现;

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

1 a ( m o d p ) = a p − 2 ( m o d p ) \frac {1}{a}(mod p) = a^{p-2}(mod p) a1(modp)=ap2(modp)
1 2 ( m o d   1 e 9 + 7 ) = a 1 e 9 + 7 − 2 ( m o d   1 e 9 + 7 ) \frac {1}{2}(mod\:1e9+7) = a^{1e9+7-2}(mod\:1e9+7) 21(mod1e9+7)=a1e9+72(mod1e9+7)
= 500000004    m o d    1 e 9 + 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;
}

→ P e r f e c t   E n d i n g \to Perfect \:Ending PerfectEnding

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值