BZOJ2326数学作业题解(矩阵乘法)

simulink可控励磁同步电机模型分析 他励同步电机模型分析 阅读详情

题目:BZOJ2326.
题目大意:给定一个数 n n n,求由 1 1 1~ n n n按顺序写出来合并得到的数模 M M M的值.例如 n n n为 13 13 13,那么写出来的数为 12345678910111213 12345678910111213 12345678910111213.
1 ≤ n ≤ 1 0 18 , 1 ≤ m ≤ 1 0 9 1\leq n\leq 10^{18},1\leq m\leq 10^9 1≤n≤1018,1≤m≤109.

乍一看感觉还挺难的,但是思考一下会发现其实只要边加数边模就可以了,只是数的位数不同会比较难处理,分段一下就好,不过直接暴力加数会TLE.

然后仔细思考一下,设 f [ i ] f[i] f[i]表示加到数 i i i的时候的值且 1 0 k ≤ i &lt; 1 0 k + 1 10^k\leq i&lt; 10^{k+1} 10k≤i<10k+1,那么显然 f [ i ] = f [ i − 1 ] ∗ 1 0 k + 1 + i f[i]=f[i-1]*10^{k+1}+i f[i]=f[i−1]∗10k+1+i.把这个转移用矩阵写出来:
[ ? ? ? ? ? ? ? ? ? ] [ f [ i ] i 1 ] = [ f [ i ] ∗ 1 0 k + i + 1 i + 1 1 ] \left[\begin{array}{ccc} ?&amp;?&amp;? \\?&amp;?&amp;? \\?&amp;?&amp;? \end{array}\right] \left[\begin{array}{c} f[i]\\ i\\ 1\\ \end{array}\right]= \left[\begin{array}{c} f[i]*10^k+i+1\\ i+1\\ 1\\ \end{array}\right] ⎣⎡​???​???​???​⎦⎤​⎣⎡​f[i]i1​⎦⎤​=⎣⎡​f[i]∗10k+i+1i+11​⎦⎤​

很容易把左边的这个矩阵填出来:
[ 1 0 k 1 1 0 1 1 0 0 1 ] \left[\begin{array}{ccc} 10^k&amp;1&amp;1\\ 0&amp;1&amp;1\\ 0&amp;0&amp;1 \end{array}\right] ⎣⎡​10k00​110​111​⎦⎤​

然后分段写矩阵乘法就可以了,不过注意要写快(gui)速乘,时间复杂度 O ( log ⁡ n ) O(\log n) O(logn),代码如下:

#include<bits/stdc++.h>
  using namespace std;

#define Abigail inline void
typedef long long LL;

const int N=3;

LL n,mod;

LL mul(LL a,LL b){
  LL s=0;
  for (;b;b>>=1,a=a+a%mod)
    if (b&1) s=s+a%mod;
  return s;
}

struct matrix{
  int n,m;
  LL v[N+9][N+9];
  
  matrix operator * (const matrix &p)const{
    matrix tmp=matrix();
    tmp.n=n;tmp.m=p.m;
    for (int i=1;i<=tmp.n;++i)
      for (int k=1;k<=m;++k)
        for (int j=1;j<=tmp.m;++j)
          tmp.v[i][j]=(tmp.v[i][j]+mul(v[i][k],p.v[k][j]))%mod;
    return tmp;
  }
  
}ans,f;

matrix e(int k){
  matrix e=matrix();
  e.n=e.m=k;
  for (int i=1;i<=e.n;++i)
    for (int j=1;j<=e.m;++j)
      e.v[i][j]=i==j?1:0;
  return e;
}

matrix go(LL k){
  matrix f=matrix();
  f.n=f.m=3;
  f.v[1][1]=k;
  f.v[1][2]=f.v[1][3]=f.v[2][2]=f.v[2][3]=f.v[3][3]=1;
  return f;
}

matrix power(matrix a,LL k){
  matrix s=e(a.n);
  for (;k;k>>=1,a=a*a)
    if (k&1) s=s*a;
  return s;
}

Abigail into(){
  scanf("%lld%lld",&n,&mod);
}

Abigail work(){
  ans.n=3;ans.m=1;
  ans.v[1][1]=0;ans.v[2][1]=0;ans.v[3][1]=1;
  LL g;
  for (g=1;g*10<=n;g*=10)
    ans=power(go(g*10),g*9)*ans;
  ans=power(go(g*10),n-g+1)*ans;
}

Abigail outo(){
  printf("%lld\n",ans.v[1][1]);
}

int main(){
  into();
  work();
  outo();
  return 0; 
}
SGP4/SDP4详解 **SGP4** (Simplified General Perturbations Version 4) 和 **SDP4** (Simplified Deep-space Perturbations Version 4) 是一组**解析轨道预报模型**,用于预测地球轨道卫星的位置和速度。它们是北美防空司令部(NORAD)维护的**TLE**数据格式的标准配套算法。 简单来说:**TLE是卫星轨道的"身份证",而SGP4/SDP4是解读这张身份证的"说明书"**。 阅读详情

相关推荐

南京工业大学高性能计算平台基础使用指南

高性能计算平台基础使用指南前言什么高性能计算南京工业大学高性能计算平台如何登录如何进行文件传输进行任务提交(本文以提交MATLAB任务为例)环境变量的配置(推荐)使用Environment Modules进行环境变量管理Modules 指令自定义MODULEFILE常见软件任务脚本 前言 第一次接触使用学校的高性能平台是在今年上半年进行毕业设计的时候,当时有大量的数据需要在Matab中进行模型运算,便向学校申请了账号,使用了HPC平台。计算速度确实比个人电脑快了太多太多。 近期,有很多初次想使用高性能计算

weixin_45710019的博客 6878

bzoj2326 矩阵乘法

http://www.lydsy.com/JudgeOnline/problem.php?id=2326 递推:f[i]= f[i-1]*(10^log(i))+i  mod M 构造矩阵: {f[i-1] i-1  1}      {10^log(i)   0      0     }         { f[i]  i  1}                    *   {1    

nikelong的博客 774

【CIC-IDS数据集+机器学习】实现网络流量异常检测

本项目基于CIC-IDS数据集,使用多种机器学习算法实现网络流量异常检测系统。项目采用了完整的机器学习工作流程,从数据预处理到模型部署,实现了高精度的网络入侵检测。

XiaoMu_001的博客 1935

bzoj2326(dp+矩阵快速幂)

这个化成dp[i]=dp[i-1]*bit+i就可以了,bit为10^位数。。 然后bit看起来不好转移。。不过bit最多为18,可以分类枚举一下。。       /** *         ┏┓    ┏┓ *         ┏┛┗━━━━━━━┛┗━━━┓ *         ┃       ┃   *         ┃   ━    ┃ *        ...

qkoqhh 283

STM32F407 步进电机S形曲线加减速

步进电机

smallerlang的博客 1591

Intel AX系列网卡5G热点开启失败?Linux下3种修复方案实测(含Ubuntu/OpenWRT)

本文针对Intel AX系列网卡在Linux系统下无法开启5G热点的常见问题,深入剖析了其根源在于内核LAR机制与驱动的兼容性。文章提供了三种实测有效的修复方案:针对内核低于5.5的模块参数法、适用于高内核版本的hostapd补丁编译法以及高阶的驱动修改法,帮助用户在Ubuntu、OpenWRT等环境中成功启用5G热点功能。

weixin_29291863的博客 734

BZOJ2326: [HNOI2011]数学作业

【传送门:BZOJ2326】 简要题意:   给出n和m,要求计算Concatenate(1...n)%m的值,其中Concatenate(1...n)是将所有正整数1,2,…,n顺序连接起来得到的数   例如,n=13,Concatenate(1...N)=12345678910111213 题解:   矩阵乘法   因为肯定不能暴力算,太大了   所以我们用矩阵记录当前的...

weixin_30546933的博客 94

Unity3d实现红外热成像效果

1.将需要在红外图像中高亮的物体设置到图层PostProcessing。 2.新建一个相机CameraHighLight,设置其Culling Mask为PostProcessing,也就是在这个相机中只有PostProcessing图层的物体可见。 3.新建一个RenderTexture,命名为HightLightRt,将CameraHighLight的Target Texture设HightLightRt。 4.新建一个相机Camera2,这个相机用于显示其他物体。 接下来将CameraHigh

zouxin_88的专栏 8327

bzoj2326 [HNOI2011]数学作业

题目链接:bzoj2326 题目大意: 给N,M。求出将1,2,…,N按顺序连在一起得到的数mod M的值。比如N是13的话,这个数就是12345678910111213。 题解: 矩乘%hyc 可以得知,答案ans=ans*10^(j的位数)+j,j=1 to N,再mod个M嘛。 于是我们可以构造一个↓这样的矩阵 × ans存的就是答案,而j就表示...

211

电赛备赛笔记:用STM32驱动AD9959信号发生器模块,从接线到出波保姆级教程

本文详细介绍了如何使用STM32驱动AD9959信号发生器模块,从硬件接线到软件调试的全流程。AD9959作为高性能DDS芯片,适用于电子设计竞赛中的信号生成需求。文章包含硬件连接指南、寄存器配置解析、多通道控制技巧以及常见问题解决方案,帮助参赛者快速掌握AD9959的应用。

weixin_31858171的博客 367

R语言pls包实战:手把手教你用偏最小二乘(PLS)搞定高维数据回归(附完整代码与数据标准化避坑指南)

本文详细介绍了如何使用R语言的pls包进行偏最小二乘(PLS)回归分析,特别针对高维数据回归问题。通过完整的代码示例和数据标准化避坑指南,帮助读者掌握从数据预处理到模型优化的全流程,解决实际应用中的常见问题。

weixin_42662605的博客 351

BZOJ-2326-数学作业-HNOI2011-矩阵乘法

描述 分析 如果用 f[i] 表示 i 时 Concatenate(1 .. i) Mod M 的值, 如果 i 是个 k 位数, 则 f[i+1] = f[i] * (10^k) + i+1, (i != 10^k-1)所以可以建立一个按 i 的位数分段的动态规划解法 -> f[n]n ≤ 10^18, 所以要用矩阵乘法优化然后就是矩阵的选取了, 我首先考虑的 2×2

ghy1953 984

wxComboBox类的使用方法及示例代码

其中,parent表示该控件的父窗口,ID_COMBOBOX是该控件的ID,用于在事件处理函数中区分不同的控件,"默认选项"是下拉列表框的默认选项,options是wxArrayString类型的数组,用于存储下拉列表框中的选项,style可以指定wxComboBox的样式。wxComboBox是wxWidgets中的一个常用控件,它可以被用来显示一组在下拉列表框中的选项,并允许用户从中选择一个选项。上述就是wxComboBox类的基本使用方法,使用这个控件可以方便地实现下拉列表框的功能。

学习使你进步。 713

矩阵乘法专题4——bzoj 2326 [HNOI2011] 数学作业 题解

【原题】 2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 853  Solved: 473 [Submit][Status] Description 【分析】我们按数字的位数来划分。对于K位数,我们就可以专门设计一个矩阵来计算。 然后就是注意细节了。 【代

阿蒋的专栏 2452

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

bzoj2326【HNOI2011】数学作业

矩阵乘法

AaronPolaris 2285

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

bzoj2326 数学作业 矩阵乘法

这道题目的递推式为f(i)=f(i-1)*10^k+i,因为和i有关系,所以一开始我不知道怎么做。后来翻了题解才知道,原来可以在矩阵里把i也构造进去。构造矩阵乘法如下:        (f(i) , i , 1)=(f(i-1), i-1, 1)*((10^k , 0 , 0),(1 , 1 , 0),(1 , 1 , 1)),其中k为i的位数。然后矩阵乘法直接上就行了。注意当i=0时矩阵为(0

lych的博客 984

【洛谷P3216】【BZOJ2326】数学作业【矩阵乘法】

思路很简单,但是调了我好久的一道题。

stoorz 359

【BZOJ 2326】 [HNOI2011]数学作业

矩阵乘法~

Regina8023 1526

bzoj 2326: [HNOI2011]数学作业 矩阵乘法

Description 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题:给定正整数 N 和 M 要求计算 Concatenate (1 … N) Mod M 的值,其中 Concatenate (1 …N)是将所有正整数 1, 2, …, N 顺序连接起来得到的数。 例如,N = 13, Concatenate (1 … N)=12345678910111213.小C 想了大半...

liangzihao1的博客 262

matlab矩阵乘法不同行,矩阵乘法在numpy/matlab/数学上的不同

数学意义上的矩阵乘法注意事项:1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。乘积-哈达马积(hadamard product)乘积-克罗内克乘积MatLab中的乘法()和点乘(.)a * b 是进行矩阵相乘, a.*b是a...

weixin_34574003的博客 1258

【BZOJ2326】【HNOI2011】数学作业 分段矩阵乘法

题解: 我们发现fi+1=fi×10p+i+1f_{i+1}=f_i\times10^p+i+1 这样我们就对于每个p的阶段都可以构造矩阵加速运算。 ⎡⎣⎢⎢⎢fi 0 0 i+100100⎤⎦⎥⎥⎥×⎡⎣⎢⎢⎢10p 1 0 011001⎤⎦⎥⎥⎥= ⎡⎣⎢⎢⎢⎢fi+1 0 0 i+200100⎤⎦⎥⎥⎥⎥ \begin{bmatrix} f_i & i+1 & 1 \\\ 0 &

辗转山河弋流歌 1446

BZOJ 2326 [HNOI2011]数学作业

题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2326 题解 分位讨论,记f[i]为Concatenate(1..i)的值,对于k位数 [f[i]i+11]=[f[i−1]i1]⋅⎡⎣⎢⎢⎢10k00010011⎤⎦⎥⎥⎥[f[i]i+11]=[f[i−1]i1]⋅[...

dilei7762的博客 155

【bzoj2326】【HNOI2011】【数学作业】【矩阵乘法】

Description 题解:设f[i]为连上第i个数之后的值。 显然f[i]=f[i-1]*10^k+i; 然后我们根据k分组。每一组内直接矩乘即可。 代码: #include #include using namespace std; long long n,m,a[4][4],b[4][4],t(10); long long mul(long long x,long l

sunshinezff的专栏 579

【bzoj2326】【HNOI2011】【数学作业】

2326: [HNOI2011]数学作业Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1264 Solved: 727 [Submit][Status][Discuss] Description 思路:其实很容易可以想到,当我们所要连接的数的位数不同的时候,我们需要把原来的数增大的倍数是不一样的。 所以我们需要分阶段来做矩乘。 根据数

Vampire 1487

【BZOJ2326】[HNOI2011]数学作业 矩阵乘法

【BZOJ2326】[HNOI2011]数学作业 题解:对于位数相同的数字,这显然是满足矩乘性质的。 那么我们枚举每一位,如果当前i=10^k,那么维护行向量(sum,now,1),now代表当前的数,每次将sum*=i再加上now,now+=1即可。 #include <cstdio> #include <cstring> #include &lt...

weixin_30952535的博客 65

BZOJ2326 HNOI2011 数学作业 矩阵乘法

题意:求12345……101112……(N-1)N mod M的值(被模数就是1-N顺次连接起来)。 题解:丧病的数学老师,看自己写的题解都看不懂了QAQ,首先设${f_i}$=前i个数连接起来 mod M的值,然后按位数不断转移,也就是说,假定当前要增加的数i最高位是10^k,那么\[{f_i} = ({10^{k + 1}}{f_{i - 1}} + i)\bmod M\] 所以...

a18700013354的博客 168

[矩阵乘法] bzoj2326: [HNOI2011]数学作业

bzoj2326: [HNOI2011]数学作业:https://www.lydsy.com/JudgeOnline/problem.php?id=2326 如果不考虑n的大小dp式子很显然:f[n]=f[n-1]*10^k+n; 因为1~9 10~99 100~999……的k都是相等的 考虑用矩乘+快速幂优化 {f[n]} {10^k,1,1} {f[n-1]} {n} =...

kkkGIGi_qtt 203
上一篇: 蓝书(算法竞赛进阶指南)刷题记录——POJ2689 Prime Distance(筛法)
下一篇: 蓝书(算法竞赛进阶指南)刷题记录——【HAOI2007】BZOJ1053反素数(数论+搜索)
hezlik
博客等级 码龄9年 111粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值