BZOJ2326 [HNOI2011]数学作业

首先,列方程

我们定义s[i] = 10 ^ ((int) log(i))

于是,f[i] = (f[i - 1] * s[i] + i) % p

反正总之就是个沙茶递推

然后我们来看优化。。。怎么感觉像矩阵乘法呢?

发现要按照log(i)即i的位数分类讨论,在相同位数的时候令矩阵为

s[i]  0    0

 1    1    0

 0    1    1

即可

 

 1 /**************************************************************
 2     Problem: 2326
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:16 ms
 7     Memory:808 kb
 8 ****************************************************************/
 9  
10 #include <cstdio>
11  
12 using namespace std;
13 typedef long long ll;
14  
15 ll n, p;
16  
17 struct Matrix {
18     ll x[4][4];
19      
20     Matrix (int X) {
21         int i, j;
22         for (i = 1; i <= 3; ++i)
23             for (j = 1; j <= 3; ++j)
24                 if (i == j) x[i][j] = X;
25                 else x[i][j] = 0;
26     }
27      
28     ll* operator [] (int X) {
29         return x[X];
30     }
31 };
32  
33 inline void operator *= (Matrix &x, Matrix y) {
34     int i, j, k;
35     Matrix res(0);
36     for (i = 1; i <= 3; ++i)
37         for (j = 1; j <= 3; ++j)
38             for (k = 1; k <= 3; ++k)
39                 (res[i][j] += x[i][k] * y[k][j]) %= p;
40     x = res;
41 };
42  
43 Matrix pow(Matrix x, ll y) {
44     Matrix res(1);
45     while (y) {
46         if (y & 1) res *= x;
47         x *= x, y >>= 1;
48     }
49     return res;
50 }
51  
52 int main() {
53     ll i;
54     Matrix ans(1), a(0);
55     scanf("%lld%lld", &n, &p);
56     a[1][1] = 10 % p, a[2][1] = a[2][2] = a[3][2] = a[3][3] = 1;
57     for (i = 10; i <= n; i *= 10, a[1][1] = i % p)
58         ans *= pow(a, i - i / 10);
59     ans *= pow(a, n - i / 10 + 1);
60     printf("%lld\n", (ans[2][1] + ans[3][1]) % p);
61     return 0;
62 }
View Code

 

转载于:https://www.cnblogs.com/rausen/p/4175633.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3. 视图数据View Data和Balde模版 - Laravel从零开始教程

从零开始学laravel教程目录 我们经常需要将数据传递到视图层显示&#xff0c;Laravel中是如何做到这点的呢&#xff1f;那我们就要先了解下Balde模版. 我们现在还是进入到我们的Laravel52的项目中&#xff0c;用sublime打开它&#xff1a; ➜ cd /usr/local/var/www/Laravel52 …

简直不敢相信!这个史上最被低估的学科,看完竟瑟瑟发抖!

▲ 点击查看历史&#xff0c;无疑是大众参与度较高的知识性学科之一&#xff0c;既没有艰深的原理和公式&#xff0c;也不需要较高的欣赏能力。不仅门槛低&#xff0c;而且具有故事性&#xff0c;容易形成话题&#xff0c;茶余饭后&#xff0c;几乎每个人、每个孩子都能谈论几句…

数据结构之广度优先搜索(队列实现)问题

Description 定义一个二维数组: int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,}; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 Input 一…

python连接linux堡垒机_利用Python Paramiko开发linux堡垒机

1.Paramiko模块下的demo.py程序前面利用Python中的Paramiko模块可以进行SSH的连接&#xff0c;以及用来传送文件(SFTP)&#xff0c;但是无论是哪一种方式&#xff0c;连接都是短暂的&#xff0c;并非是长连的&#xff0c;即一次执行一个命令或上传与下载一个文件&#xff0c;显…

一款强大的Kubernetes API流量查看神器

点击上方蓝字关注 &#x1f446;&#x1f446;大家好&#xff0c;我是小碗汤&#xff0c;今天分享一个k8s流量查看器~mizu。mizu 是为 Kubernetes 提供的一个简单而强大的 API 流量查看器&#xff0c;可以查看微服务之间的所有 API 通信&#xff0c;以帮助调试和排除故障。相当…

辉光UIView的category

辉光UIView的category 本人视频教程系类 iOS中CALayer的使用 效果如下&#xff1a; 源码&#xff1a; UIViewGlowView.h 与 UIViewGlowView.m // // UIViewGlowView.h // YouXianClock // // Created by YouXianMing on 14-12-21. // Copyright (c) 2014年 YouXianMing. …

javascript 动态创建表格

<html><head><script>function createTable(rows,lines){this.rowsrows;this.lineslines;var Bodydocument.getElementById(body);var Tabledocument.createElement(table);//创建table标签元素Table.setAttribute(border,1);//给table标签添加其他属性for(v…

linux c之加入了加入原文件 math.h调用abs()函数出现implicit declaration of function错误

今天在vim 写C语言的时候 代码我已经导入了#include<math.h> 但是当我调用ads()函数的时候出现了下面错误 解决办法&#xff1a; 把abs函数改写成fabs函数就行&#xff0c;然后去网上找原因&#xff0c;发现fabs是求浮点数的&#xff0c;ads求整形的&#xff0c;以后在…

你的女神今日结婚了!!!你失恋了......

1 新垣结衣结了婚▼2 我和朋友最近的聊天内容&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 白粥盖浇饭&#xff1f;&#xff1f;&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 中国人的辈分可以复杂到什么程度&#xff1f;&#xff08…

我的技术回顾那些与ABP框架有关的故事-2017年

推荐阅读&#xff1a;我的技术回顾那些与ABP框架有关的故事-2015年从ABP框架国内社区发展回顾.NET技术变迁-2016年从2022年来回顾ABP框架&#xff0c;我们会发现无论是商业模式还是架构设计思路&#xff0c;如果没有良好的商业模式的话&#xff0c;ABP框架很容易进入难产的状态…

python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

教为学&#xff1a;Python学习之路(二)&#xff1a;MySQLdb的几种安装方式&#xff0c;以及用Python测试连接MySqlEasy_install安装MySQLdb很简单&#xff0c;以至于我不晓得该怎么说。一句话。sodu easy_install mysql-python假如报错了怎么办&#xff1f;报错&#xff0c;我也…

Camera360与全球1.8亿用户共同创造更美的照片

Camera360是成都品果科技有限公司推出的基于IOS、Windows Phone和安卓系统的功能强大的手机摄影软件。能拍摄出不同风格&#xff0c;不同特效的照片&#xff0c;同时具有互联网分享功能。Camera360在全球拥有1.8亿用户&#xff0c;国外0.95亿&#xff0c;国内0.85亿&#xff0c…

八皇后问题(一)

问题描述: 要在8*8的国际象棋棋盘中放8个皇后,使任意两个皇后都不能互相吃掉。规则是皇后能吃掉同一行、同一列、同一对角线的棋子。如下图即是两种方案: 思路: 比如我们搞个数组,数组的下表表示多少行,然后数值表示多少列,比如a[4] = 5,意思就代表第四行,第五列 首先…

CentOS学习笔记--程序管理

程序管理 一个程序被加载到内存当中运行&#xff0c;那么在内存内的那个数据就被称为程序(process)。程序是操作系统上非常重要的概念&#xff0c; 所有系统上面跑的数据都会以程序的型态存在。那么系统的程序有哪些状态&#xff1f;不同的状态会如何影响系统的运行&#xff1f…

linux shell 嵌套expect 与服务器交互脚本

2019独角兽企业重金招聘Python工程师标准>>> 我们与服务器进行交互是该用expect 脚本的&#xff0c;用 “/usr/bin/expect <<-EOF” 来开启expect 脚本 用spawn 来开启一个新的进程 expect 来接受命令&#xff0c;send来发送交互命令 结束用 EOF来over expect…

python读取mysql以html形式输出_python实现处理mysql结果输出方式

在运维过程中&#xff0c;经常需要读取mysql的结果输出并进行响应的处理&#xff0c;这节介绍如何用Python读取mysql结果表并进行相应的整理。进行mysql结果文件输出&#xff1a;mysql -h10.20.10.207 -uroot -ppasswd test -e "select sendorderid, (price*100),mob from…

SkyWalking集成与案例

今天我们通过代码的形式来了解下&#xff0c;如何在项目中使用Skywalking。前几篇文章可以参考&#xff1a;《学习Skywalking 搭建篇》《Skywalking执行效果 多图篇》《Skywalking的ES索引 收藏篇》今天说说代码篇。先说下比较常见的开源 APM 如下&#xff1a;CAT&#xff1…

Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性

多种 Windows Azure服务可以帮助您将应用程序安全性扩展到云。 有三种服务可提供多个提供程序之间的身份标识映射、内部部署数据中心间的连接和相互发送消息的应用程序功能&#xff08;无论应用程序位于何处&#xff09;。 使用Windows Azure Active Directory&#xff0c;您…