博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51Nod - 1013 3的幂的和
阅读量:5161 次
发布时间:2019-06-13

本文共 991 字,大约阅读时间需要 3 分钟。

51Nod - 

求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
 
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Input示例
3
Output示例
40

 

题解:

  这道题的解体方法很多。

  有公式法,直接利用等比数列求和公式(用long long类型保存才行。) 

  有快速迭代幂算法。本题解就是采用较笨的方法。 

 

 

 

#include 
#include
using namespace std;const int MOD = 1e9 + 7; vector
> multiple(const vector
>& a, const vector
>& b){ vector
> ans(a.size(), vector
(b[0].size(), 0) ); for(int i=0; i
> Pow(vector
> M, int p){ vector
> ans = M; p--; while(p > 0){ if(p%2 == 1){ ans = multiple(ans, M); } M = multiple(M, M); p = p/2; } return ans; }int main(){// freopen("in.txt", "r", stdin); int N, ans; vector
> t(2, vector
(2, 0)); t[0][0] = 3; t[0][1] = 1; t[1][0] = 0; t[1][1] = 1; while(scanf("%d", &N) != EOF){ if(N <= 0){ ans = 1; }else{ vector
> tg = Pow(t, N); ans = int((tg[0][0]*1 + tg[0][1]*1) % MOD); } printf("%d\n", ans ); } return 0; }

  

 

转载于:https://www.cnblogs.com/zhang-yd/p/6818212.html

你可能感兴趣的文章
redis学习系列——redis主从同步配置及原理介绍
查看>>
titanium开发教程-02-11增加交互性,在任何view
查看>>
Unity3d 小游戏从入门到???
查看>>
关于API设计规范
查看>>
【WPF】OpacityMask作用于Button的一点体会
查看>>
ant构建工具
查看>>
Alpha项目冲刺(团队作业5)
查看>>
codeforce830A. Office Keys
查看>>
CF 480 E. Parking Lot
查看>>
一个屌丝程序猿的人生(九十)
查看>>
关于java和jvm的思考
查看>>
企业级编号
查看>>
Python面向对象
查看>>
高校成绩管理数据库系统的设计与实现 - 实验报告
查看>>
PM(Project Manager):系列博客
查看>>
spring事务之——spring配置事务的五种方式
查看>>
delphi数组之菜鸟篇
查看>>
node
查看>>
day01 Java基础
查看>>
Web开发应该注意的问题
查看>>