bzoj2326【HNOI2011】数学作业
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】数学作业相关推荐
- bzoj2326 [HNOI2011]数学作业
矩阵乘,按位搞 两个矩阵,分别为 ans00i00100 10k11011001 快速幂转移就好了 #include <cstdio> #include <cstring> # ...
- BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】
题解 我们设f[i]表示前i个数模M意义下的答案 则f[i] = f[i - 1] * 100...0 + i[i是几位就有几个0] 可以写出矩阵递推式: 之后按位数分组矩乘就好了 #include& ...
- [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)
Description Input Output Sample Input Sample Output HINT Source Solution 递推式长这样:$f[n]=f[n-1]*10^k+n$ ...
- BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )
BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位. 这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理 ...
- bzoj 2326: [HNOI2011]数学作业(矩阵快速幂)
2326: [HNOI2011]数学作业 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2249 Solved: 1301 [Submit][St ...
- 洛谷 P3216 [HNOI2011]数学作业
PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P3216 [HNOI2011]数学作业 题目 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正 ...
- HNOI2011 数学作业
先上一下题目吧 HNOI2011 数学作业 Problem 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M ,要求计算 Concatenate(1..N) ...
- 【bzoj2326】[HNOI2011]数学作业 矩阵乘法
题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...
- bzoj 2326: [HNOI2011]数学作业
Description 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题:给定正整数 N 和 M 要求计算 Concatenate (1 .. N) Mod M 的值,其中 Conc ...
- [HNOI2011]数学作业
题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Concatenat ...
最新文章
- “口碑营销”产品模型推测与分析
- 用python绘制柱状图标题-使用Python绘制柱形竞赛图
- 明天是我的生日,写给24岁的自己
- 【STM32】I2C详解
- 3D游戏建模到底需要学习哪些美术基础?新手学习3D建模?
- nginx反代web页面没有正常显示_web漏洞-SSI注入漏洞深入详解
- centos dns服务器_CentOS-6 实战三 搭建DNS服务器
- python字典遍历 没有顺序_Python实现字典的遍历与排序功能示例
- SeaweedFS 分布式 上传、下载、删除附件公共接口
- 毕业季的你准备好面试了吗?(下)
- Ping++ 牵手招商银行,正式为商户开放一网通支付渠道
- Django写一个登录注册---001创建项目以及设计数据库
- Python数据分析案例17——电影人气预测(特征工程构建)
- 845透色android10,和平精英TCA845透色
- 若依(ruoyi)框架关闭当前标签页
- 用c语言实现cos(x)与sin(x) 函数以及“绝对值函数”和“阶乘函数”
- CANoe.DiVa 操作指南 - DTC自动化测试
- redhat 中使用更改yumy源为centos的163源
- 跟着大佬上大分-Web of Lies
- uniapp 框架下如何引入turf.js