2326: [HNOI2011]数学作业

Time Limit: 10 Sec   Memory Limit: 128 MB
Submit: 1648   Solved: 972
[ Submit][ Status][ Discuss]

Description

(f[n])(10^k  1    1)(f[n-1])

( n )=(0      1    1)( n-1 )

( 1 ) (0      0    1)(  1  )

然后分段矩阵乘法。这道题调了整整一晚上,忘记每一步运算都取模,这道题很容易超过long long。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
using namespace std;
ll n,m;
struct matrix
{ll f[4][4];matrix(){memset(f,0,sizeof(f));}friend matrix operator *(const matrix &a,const matrix &b){matrix c;F(i,1,3) F(j,1,3) F(k,1,3) c.f[i][j]=(c.f[i][j]%m+a.f[i][k]%m*b.f[k][j]%m)%m;return c;}
}ans,tmp;
inline void calc(ll t,ll x)
{memset(tmp.f,0,sizeof(tmp.f));tmp.f[1][1]=t%m;tmp.f[1][2]=tmp.f[1][3]=tmp.f[2][2]=tmp.f[2][3]=tmp.f[3][3]=1;for(ll y=x-t/10+1;y;y>>=1,tmp=tmp*tmp) if (y&1) ans=tmp*ans;
}
int main()
{scanf("%lld%lld",&n,&m);memset(ans.f,0,sizeof(ans.f));F(i,1,3) ans.f[i][i]=1;ll t=10;while (n>=t){calc(t,t-1);t*=10;}calc(t,n);printf("%lld\n",ans.f[1][3]);return 0;
}

bzoj2326【HNOI2011】数学作业相关推荐

  1. bzoj2326 [HNOI2011]数学作业

    矩阵乘,按位搞 两个矩阵,分别为 ans00i00100 10k11011001 快速幂转移就好了 #include <cstdio> #include <cstring> # ...

  2. BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】

    题解 我们设f[i]表示前i个数模M意义下的答案 则f[i] = f[i - 1] * 100...0 + i[i是几位就有几个0] 可以写出矩阵递推式: 之后按位数分组矩乘就好了 #include& ...

  3. [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)

    Description Input Output Sample Input Sample Output HINT Source Solution 递推式长这样:$f[n]=f[n-1]*10^k+n$ ...

  4. BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )

    BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位. 这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理 ...

  5. bzoj 2326: [HNOI2011]数学作业(矩阵快速幂)

    2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2249  Solved: 1301 [Submit][St ...

  6. 洛谷 P3216 [HNOI2011]数学作业

    PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P3216 [HNOI2011]数学作业 题目 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正 ...

  7. HNOI2011 数学作业

    先上一下题目吧 HNOI2011 数学作业 Problem 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M ,要求计算 Concatenate(1..N) ...

  8. 【bzoj2326】[HNOI2011]数学作业 矩阵乘法

    题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...

  9. bzoj 2326: [HNOI2011]数学作业

    Description 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题:给定正整数 N 和 M 要求计算 Concatenate (1 .. N) Mod M 的值,其中 Conc ...

  10. [HNOI2011]数学作业

    题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Concatenat ...

最新文章

  1. “口碑营销”产品模型推测与分析
  2. 用python绘制柱状图标题-使用Python绘制柱形竞赛图
  3. 明天是我的生日,写给24岁的自己
  4. 【STM32】I2C详解
  5. 3D游戏建模到底需要学习哪些美术基础?新手学习3D建模?
  6. nginx反代web页面没有正常显示_web漏洞-SSI注入漏洞深入详解
  7. centos dns服务器_CentOS-6 实战三 搭建DNS服务器
  8. python字典遍历 没有顺序_Python实现字典的遍历与排序功能示例
  9. SeaweedFS 分布式 上传、下载、删除附件公共接口
  10. 毕业季的你准备好面试了吗?(下)
  11. Ping++ 牵手招商银行,正式为商户开放一网通支付渠道
  12. Django写一个登录注册---001创建项目以及设计数据库
  13. Python数据分析案例17——电影人气预测(特征工程构建)
  14. 845透色android10,和平精英TCA845透色
  15. 若依(ruoyi)框架关闭当前标签页
  16. 用c语言实现cos(x)与sin(x) 函数以及“绝对值函数”和“阶乘函数”
  17. CANoe.DiVa 操作指南 - DTC自动化测试
  18. redhat 中使用更改yumy源为centos的163源
  19. 跟着大佬上大分-Web of Lies
  20. uniapp 框架下如何引入turf.js

热门文章

  1. Ashampoo软件大全
  2. 暗黑3显示无效的服务器,《暗黑3》为啥爆不出好装备?服务器IP决定你的人品...
  3. Android:使用MuPdf开源库阅读PDF文件
  4. 云原生架构下复杂工作负载混合调度的思考与实践
  5. php论坛源码登录破解,MDClub轻量级php论坛源码
  6. valgrind 工具使用
  7. SOC FPGA linux系统搭建(Terasic DE10-Nano开发板)
  8. 初入it公司程序员应该做什么
  9. 纳入3C强制性认证的产品目录
  10. JQuery 大写输入提示