博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P3216 [HNOI2011] 数学作业 [矩阵加速,数论]
阅读量:5243 次
发布时间:2019-06-14

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

  

数学作业

题目描述

小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题:

给定正整数 N和 M,要求计算 Concatenate (1 .. N)MoM 的值,其中 Concatenate(1..N) 是将所有正整数1,2,,N 顺序连接起来得到的数。例如,N=13 , Concatenate (1 .. N)=12345678910111213 .小C 想了大半天终于意识到这是一道不可能手算出来的题目,于是他只好向你求助,希望你能编写一个程序帮他解决这个问题。

输入输出格式

输入格式:

 

从文件input.txt中读入数据,输入文件只有一行且为用空格隔开的两个正整数N和M,其中30%的数据满足 1≤N≤1000000 ;100%的数据满足 1≤N≤10^18 且 1≤M≤10^9 .

 

输出格式:

 

输出文件 output.txt 仅包含一个非负整数,表示 Concatenate (1 .. N) Mod M 的值。

 

输入输出样例

输入样例#1: 
13 13
输出样例#1: 

 4

 


  分析:明显矩阵加速。代码打出来确实也就是个模板,但是中间矩阵的构造确实非(sang)常(xin)的(bing)难(kuang)。

  首先分析,对于一个k位数x,很明显得到的结果应该是f(x)=f(x-1)*10^k+x;

  那么经过一番简(yao)短(ming)的思考后,可以得到中间矩阵应该是

10^k 0 0
1 1 0
0 1 1

 

   而初始矩阵应为:

0 1 1
0 0 0
0 0 0

 

  那么剩下的就是矩阵加速模板了~

  Code:

 

#include
using namespace std;typedef long long ll;ll n,mod;struct Matrix{ ll a[5][5]; Matrix(){memset(a,0,sizeof(a));} Matrix(ll b[5][5]){memcpy(a,b,sizeof(a));} friend Matrix operator * (const Matrix a,const Matrix b){ Matrix ret; for(int i=0;i<=2;i++) for(int j=0;j<=2;j++) for(int k=0;k<=2;k++) ret.a[i][j]=(ret.a[i][j]+(a.a[i][k]*b.a[k][j])%mod)%mod; return ret; }}K,T;int main(){ cin>>n>>mod;ll now=0; K.a[0][0]=0;K.a[0][1]=1;K.a[0][2]=1; for(ll i=10;now
>=1;} now=min(i-1,n);} cout<

 

 

 

 

转载于:https://www.cnblogs.com/cytus/p/9113776.html

你可能感兴趣的文章
数据结构之排序三:插入排序
查看>>
Class.forName(),classloader.loadclass用法详解
查看>>
vue route 跳转
查看>>
Device Tree Usage
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
POJ 1220 高精度/进制转换
查看>>
cocos2d-x中CCLabelAtlas的小图片拼接
查看>>
【学习笔记】深入理解js原型和闭包系列学习笔记——精华
查看>>
深入理解js——prototype原型
查看>>
Entityframework:“System.Data.Entity.Internal.AppConfig”的类型初始值设定项引发异常。...
查看>>
Ubuntu 安装之python开发
查看>>
恶心的struts标签,等我毕业设计弄完了,瞧我怎么收拾你。
查看>>
Linux中防火墙centos
查看>>
hudson+apachecontinuum+ant
查看>>
mysql新建用户,用户授权,删除用户,修改密码
查看>>
实验五 TCP传输及加密
查看>>
【iOS】build diff: /../Podfile.lock: No such file or directory
查看>>
【Android Studio】使用 Genymotion 调试出现错误 INSTALL_FAILED_CPU_ABI_INCOMPATI
查看>>
FancyCoverFlow
查看>>
教你一分钟实现动态模糊效果
查看>>