问题描述

一个数:1234567891011121314151617181920…,数到了N,那么形成的这个数字除以1000000007的余数是多少呢?
输入描述
一行,一个整数N,如题目描述
输出描述
一行,一个整数,表示这个数字除以1000000007的余数。
输入样例
10
输出样例
345678826
解释:
12345678910%1000000007=345678826

30%的数据满足:N<=20,
70%的数据满足:N<=10000,
100%的数据满足:N<=10^18


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const long long mod=1e9+7;
long long n;
struct node
{long long m[3][3];
};
node mul(node a,node b)
{node c;memset(c.m,0,sizeof(c.m));for(int i=0;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<3;k++)c.m[i][j]=(c.m[i][j]+(a.m[i][k]*b.m[k][j])%mod)%mod;return c;
}
node quick_mod(node a,long long mi)
{node ans;memset(ans.m,0,sizeof(ans.m));ans.m[0][0]=ans.m[1][1]=ans.m[2][2]=1;while(mi){if(mi&1) ans=mul(ans,a);a=mul(a,a);mi>>=1;}return ans;
}
int main()
{cin>>n;node ans;memset(ans.m,0,sizeof(ans.m));ans.m[0][1]=ans.m[0][2]=1ll;long long now=1ll;while(now<=n){now*=10ll;node a;memset(a.m,0,sizeof(a.m));a.m[0][0]=now%mod; a.m[1][0]=a.m[1][1]=a.m[2][1]=a.m[2][2]=1ll;if(now>n) ans=mul(ans,quick_mod(a,n-(now/10)+1));else      ans=mul(ans,quick_mod(a,now-(now/10)));}cout<<ans.m[0][0]%mod<<endl;
}

数绵羊(矩阵快速幂)相关推荐

  1. 2015多校10 1006.CRB and Puzzle HDU5411(邻接矩阵求k长路条数,矩阵快速幂

    题意:有若干字符,现在要把它们连成一个字符串,每种字符后面只能接特定种类的字符,现在询问能连接出的长度小于等于m的字符串有多少种. 思路:我们可以把这个转移关系看成一个图,如果字符a后面可以接b,那么 ...

  2. leetcode509. 斐波那契数(矩阵快速幂)

    斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0,   F(1) = 1 F(N) = F( ...

  3. Fzu 2198 快来快来数一数【矩阵快速幂】

     Problem 2198 快来快来数一数 Accept: 218    Submit: 704 Time Limit: 1000 mSec    Memory Limit : 65536 KB  P ...

  4. foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂

    Problem 2198 快来快来数一数 Accept: 67 Submit: 194 Time Limit: 1000 mSec Memory Limit : 65536 KB Problem De ...

  5. 上海理工大学第二届“联想杯”全国程序设计邀请赛 - Little Witch Academia(矩阵快速幂)

    题目链接:点击查看 题目大意:给出两种型号的瓷砖,尺寸分别是 a∗1a*1a∗1 和 b∗1b*1b∗1,现在需要填满 w∗hw*hw∗h 的矩阵,需要满足以下两个情况: 瓷砖不能旋转 相邻的两行中, ...

  6. 牛客练习赛27 F-计数(状压+限制初末状态的矩阵快速幂)

    传送门 假如不是环,很简单 定义f[i][j]f[i][j]f[i][j]枚举到第iii个数字最后五个数字状态是jjj 那么显然可以矩阵快速幂求解 初始矩阵aaa是111行(1<<m)−1 ...

  7. FZU 2198 快来快来数一数(矩阵快速幂)

    /* a[i]=6*a[i-1]-a[i]+1;矩阵快速幂+预处理vc++可过.... */ # include <stdio.h> # include <algorithm> ...

  8. [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]

    解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...

  9. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  10. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

最新文章

  1. vscodemaven 配置_二、vscode搭建maven开发环境
  2. 做了几道Linux笔试题1
  3. [CF]Codeforces Round #528 Div.2
  4. 挖洞经验 | 看我如何发现“小火车托马斯”智能玩具APP聊天应用漏洞
  5. c语言计算机二级考试内容,2017计算机二级考试内容C语言
  6. Actor生命周期理解
  7. Zabbix3.4安装详细步骤
  8. leetcode1237. 找出给定方程的正整数解(二分法)
  9. I begin to keep a daily
  10. jenkins java版本_安装jenkins几个版本貌似都有问题
  11. 常用作业定义的T-SQL模板.sql
  12. Unity3D碰撞触发函数
  13. ZAB协议(ZooKeeper Atomic Broadcast)入门
  14. Google搜索简单介绍
  15. 微信公众号迁移公证书好办吗,真实经历!公众平台迁移见证需要什么材料,流程及费用详解
  16. 魔百和CM311-1A_YST、(YM)_安卓9_S905L3A_默认开启ADB_纯净精简语音_完美线刷包
  17. 海康威视工业相机MAC地址
  18. error:LNK2005 已经在*.obj文件中定义的解决办法
  19. MathType 如何安装成功以及如何导入word
  20. 回顾经典-读《JavaScript高级程序设计》

热门文章

  1. Launchy - 经典实用的免费键盘快速启动工具,桌面图标神马的最无爱了!
  2. 纳秒级分布式无锁限流插件 Current-Limiting
  3. 正则校验整数,校验小数位,校验2-4位小数位,正整数长度可控制
  4. 概述纵横制电话交换机
  5. java面向对象基础
  6. 花飞花落花飘谢,红绡香断有谁怜!
  7. 暗影精灵4风扇转速调节_答疑解惑,暗影精灵4用了半年的真实感受
  8. glassfish简单介绍
  9. log是什么文件可以删除吗?log文件被删怎么恢复?
  10. python+nodejs+vue酒店点餐饮系统项目