[BZOJ2326] [HNOI2011] 數學作業 (矩陣乘法)

Description

Input

Output

Sample Input

Sample Output

HINT

Source

Solution

  遞推式長這樣:$f[n]=f[n-1]*10^k+n$

  對于每一段位數個數相同的$n$(如$10\sim99,100\sim999,23333\sim66666,1018701389\sim2147483647$),$k$是個定值

  然后就可以開心地分段矩陣乘法了,剩下的自己推吧

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 int mod;
 5 struct mat
 6 {
 7     ll a[4][4];
 8     int n, m;
 9  
10     mat()
11     {
12         memset(a, 0, sizeof(a));
13         n = 0, m = 0;
14     }
15  
16     mat(int x, int y)
17     {
18         memset(a, 0, sizeof(a));
19         n = x, m = y;
20     }
21  
22     mat operator* (const mat &rhs) const
23     {
24         mat ans;
25         ans.n = n, ans.m = rhs.m;
26         for(int i = 1; i <= n; ++i)
27             for(int j = 1; j <= rhs.m; ++j)
28                 for(int k = 1; k <= m; ++k)
29                     ans.a[i][j] = (ans.a[i][j] + a[i][k] * rhs.a[k][j]) % mod;
30         return ans;
31     }
32  
33     mat operator^ (ll rhs) const
34     {
35         mat ans(n, n), b = *this;
36         for(int i = 1; i <= n; ++i)
37             ans.a[i][i] = 1;
38         for(; rhs; rhs >>= 1, b = b * b)
39             if(rhs & 1) ans = ans * b;
40         return ans;
41     }
42 };
43  
44 int main()
45 {
46     ll n, c;
47     mat ans(1, 3), b(3, 3);
48     scanf("%lld%d", &n, &mod);
49     ans.a[1][3] = 1;
50     for(int i = 1; i <= 3; ++i)
51         for(int j = 1; j <= i; ++j)
52             b.a[i][j] = 1;
53     for(ll i = 10; ; i *= 10)
54     {
55         b.a[1][1] = i % mod;
56         if(i <= n) c = i / 10 * 9;
57         else c = n - i / 10 + 1;
58         ans = ans * (b ^ c);
59         if(i > n) break;
60     }
61     printf("%lld\n", ans.a[1][1]);
62     return 0;
63 }
View Code

?

轉載于:https://www.cnblogs.com/CtrlCV/p/5668799.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254898.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HALCON示例程序texture.hdev檢測樹木

小哥哥小姐姐覺得有用點個贊唄&#xff01; HALCON示例程序texture.hdev檢測樹木 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_close_window () Interactive : 0 dev_close_window () read_image (MreutHill, ‘mreut_y’) get_image_size (MreutH…

1、python基礎速成

基礎模塊 def prt(age,name):#函數定義 print("%s is %d 年齡 old"%(name,age)) if __name__"__main__":#程序入口 print("Hello World") prt(45,"gaici") 獲取輸入&#xff1a;使用input()函數 nameinput("you name &#x…

老男孩博客園楊海潮MySQL--MySQL機構邏輯2

轉載于:https://blog.51cto.com/yanfeilai528/2103403

法國標致雪鐵龍汽車公司采用通快碟片激光器進行焊接

發布日期&#xff1a;2011-10-14 來源&#xff1a;光電新聞網 發布人&#xff1a;星之球科技 摘要&#xff1a;3月11日消息&#xff0c;十一個碟片激光器&#xff08;disk laser&#xff09;將安裝在標致雪鐵龍集團的工廠&#xff0c;這家法國汽車制造商準備使用4千瓦的激光器…

h.264 rtp打包

(2011-05-27 08:44:13) 轉載標簽&#xff1a; 雜談 payload,H.264 RTP payload 格式 on 2011-2-18 in 博文摘選 | 0 Comment 1. 網絡抽象層單元類型 (NALU) NALU 頭由一個字節組成, 它的語法如下: --------------- |0|1|2|3|4|5|6|7| -------- |F|NRI| Type | --------------…

jquery live hover綁定方法

$(".select_item span").live({mouseenter:function(){$(this).addClass("hover");},mouseleave:function(){$(this).removeClass("hover");} }); 注意&#xff1a;jquery1.9以上版本不支持live&#xff0c;新方法為on 轉載于:https://www.cnblo…

HALCON示例程序vessel.hdev血管的分割與測量

小哥哥小姐姐覺得有用點個贊唄&#xff01; HALCON示例程序vessel.hdev血管的分割與測量 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_window (‘off’) dev_close_window () dev_open_window (0, 0, 512, 512, ‘black’, WindowID) set_d…

電子凸輪

CAM功能是按照一種人為預先設定的曲線關系(可以在線修改,對SEW的變頻/伺服控制器而言)來運動的控制應用。 100%速度前饋的位置控制這個觀點偶不敢茍同.典型的一些應用。比如:全自動包裝機械上,移動鋸,其實大家說的電子齒輪&#xff0c;指的就是一種可以調節主從速度比的同步應用…

浙南聯合訓練賽20180414

這次題目的代碼都不長&#xff0c;CF的一貫風格 A - Game CodeForces - 513A Two players play a simple game. Each player is provided with a box with balls. First players box contains exactly n1 balls and second players box contains exactly n2balls. In one move…

原生JS實現蘋果菜單

今天分享下用原生JS實現蘋果菜單效果&#xff0c;這個效果的重點有以下幾點 圖標中心點到鼠標的距離的算法 利用比例計算圖標的寬度 代碼地址&#xff1a;https://github.com/peng666/blogs/blob/gh-pages/menus/index.html 在線測試地址&#xff1a;http://peng666.github.io/…

Gym 100090D Insomnia

從 n 變到 1&#xff0c;有多少種方案&#xff1f; 打表記憶化。 1 #include <bits/stdc.h>2 3 using namespace std;4 5 int n;6 int dp[1000005];7 int dfs(int n) {8 if(n1)9 return 1; 10 if(dp[n]>0) 11 return dp[n]; 12 int cnt0;…

halcon rectangle1_domain縮減圖像域為矩形

目錄rectangle1_domain&#xff08;算子&#xff09;描述參數rectangle1_domain&#xff08;算子&#xff09; rectangle1_domain - 將圖像的域縮小為矩形。 rectangle1_domain&#xff08;Image&#xff1a;ImageReduced&#xff1a;Row1&#xff0c;Column1&#xff0c;Row…

PC+運動控制卡的控制方案

PC運動控制卡的控制方案&#xff1a; 采用PC&#xff0b;運動控制卡作為上位控制可充分利用計算機資源&#xff0c;用于運動過程、運動軌跡都比較復雜&#xff0c;且柔性比較強的機器和設備。從用戶使用的角度來看&#xff0c;基于PC機的運動控制卡主要是硬件接口&#xff08;輸…

IP/TCP/UDP/RTP/RTCP 包結構圖

IP 包頭結構: TCP 包頭結構: UDP 包頭結構: RTP 包頭結構: RTCP 包頭結構:

你可能不知道的java、python、JavaScript以及jquary循環語句的區別

一.概述 java循環語句分為四種形式&#xff0c;分別是 while, do/while, for, foreach&#xff1b; python中循環語句有兩種&#xff0c;while&#xff0c;for&#xff1b; JavaScript中循環語句有四種&#xff0c;while&#xff0c;do/while&#xff0c;for&#xff0c;for/in…

webservices系列(二)——JAX-WS文件上傳下載

新建ImgData類&#xff0c;存放文件javabean DataHandler&#xff1a;使用這個類型存放文件 XmlRootElement(name"ImaData") XmlAccessorType(XmlAccessType.FIELD) public class ImgData {private Integer id;XmlMimeType("application/octet-stream")pri…

halcon sobel邊緣檢測sobel_amp

目錄sobel_amp&#xff08;算子&#xff09;描述參數sobel_amp&#xff08;算子&#xff09; sobel_amp - 使用Sobel算子檢測邊緣&#xff08;幅度&#xff09;。 sobel_amp&#xff08;圖片&#xff1a;邊緣圖像&#xff1a;濾波器方式&#xff0c;掩膜大小:) 描述 sobel_…

es中的一些知識點記錄

1. forcemerge接口 強制段合并&#xff0c;設置為1時&#xff0c;是期望最終只有1個索引段。但實際情況是&#xff0c;合并的結果是段的總數會減少&#xff0c;但仍大于1&#xff0c;可以多次執行強制合并的命令。 設置的的目標值越小。合并消耗的時間會越久。 curl -XPOST htt…

用live555和ffplay搭建流媒體環境

用live555和ffplay搭建流媒體環境 http://bbs.chinavideo.org/viewthread.php?tid12166

如何才能優雅地書寫JS代碼

第一&#xff1a;關于匿名函數的使用 要避免全局變量泛濫&#xff0c; 可以考慮使用匿名函數&#xff0c; 把不需要在外部訪問的變量或者函數限制在一個比較小的范圍內。 例如以下代碼&#xff1a; <script> function func1(){ var list ["a", "b",…