Codeforces Round #450 (Div. 2)D. Unusual Sequences[數論][組合數學][dp II]

題目:http://codeforces.com/contest/900/problem/D

題意:找到加和為m的且gcd為n的數列種類數

分析:可以轉化為求gcd為1的加和為m/n的種類數,假設有m/n個1,則除了第一個以外的每個1可以選擇和前面一項合并,也可以獨立存在,故不考慮gcd總情況有$2^{(m/n-1)}$。

考慮過加和后,可以刪除gcd為2,3,4……的情況,gcd為2的情況則為2個相同的gcd為1且加和為n/2的序列組合,3同理。所以找出除1以外的所有x的因子,減去相應的情況,使用記憶化搜索。

代碼:

 1 #define _CRT_SECURE_NO_DEPRECATE
 2 #pragma comment(linker, "/STACK:102400000,102400000")
 3 #include<iostream>  
 4 #include<cstdio>  
 5 #include<fstream>  
 6 #include<iomanip>
 7 #include<algorithm>  
 8 #include<cmath>  
 9 #include<deque>  
10 #include<vector>
11 #include<bitset>
12 #include<queue>  
13 #include<string>  
14 #include<cstring>  
15 #include<map>  
16 #include<stack>  
17 #include<set>
18 #include<functional>
19 #define pii pair<int, int>
20 #define mod 1000000007
21 #define mp make_pair
22 #define pi acos(-1)
23 #define eps 0.00000001
24 #define mst(a,i) memset(a,i,sizeof(a))
25 #define all(n) n.begin(),n.end()
26 #define lson(x) ((x<<1))  
27 #define rson(x) ((x<<1)|1) 
28 #define inf 0x3f3f3f3f
29 typedef long long ll;
30 typedef unsigned long long ull;
31 using namespace std;
32 const int maxn = 1e5 + 5;
33 map<int, ll>dp;
34 ll poww(ll m, int n)
35 {
36     ll ans = 1;
37     ll temp = m%mod;
38     while (n)
39     {
40         if (n & 1)
41             ans *= temp;
42         ans %= mod;
43         temp *= temp;
44         temp %= mod;
45         n >>= 1;
46     }
47     return ans%mod;
48 }
49 ll getans(ll x)
50 {
51     if (dp.count(x))return dp[x];
52     ll tempans = poww(2, x - 1);
53     for (int i = 2; i*i <= x; ++i)
54     {
55         if (x%i == 0)tempans = (tempans - getans(x / i) + mod) % mod;
56         if (x%i==0&&i*i != x)tempans = (tempans - getans(i) + mod) % mod;
57     }
58     tempans = (tempans - getans(1) + mod) % mod;
59     return dp[x]=tempans;
60 }
61 
62 int main()
63 {
64     ios::sync_with_stdio(false);
65     cin.tie(0); cout.tie(0);
66     int i, j, k, m, n;
67     cin >> n >> m;
68     if (m%n) { cout << "0" << endl; return 0; }
69     dp[1] = 1;
70     m /= n;
71     ll ans = getans(m);
72     cout << ans << endl;
73     return 0;
74 }

轉載于:https://www.cnblogs.com/Meternal/p/8119821.html

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

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

相關文章

ffmpeg 常用命令

去LOGO水印&#xff1a; ffmpeg -i test.mp4 -filter_complex "delogox850:y500:w160:h70:show0" delogo.mp4加文字&#xff1a; ffmpeg -i test.mp4 -vf "drawtextfontfileMicroYaHei.ttf:text雪人制造:x60:y60:fontsize24:fontcolor#FFFFFF0.8" -y draw…

css_oneday

css css概述&#xff1a; css全稱Cascading Style Sheets &#xff1a;層疊樣式表&#xff0c;用于控制網頁的樣式和布局。 css的四種引入方式 1.行內式 行內式是在標記的style屬性中設定CSS樣式。這種方式沒有體現出CSS的優勢&#xff0c;不推薦使用。 <body><p styl…

【BIM入門實戰】Revit 2018墻體繪制—別墅地下室

別墅地下室繪制效果: 設置墻體顯示模式: 本文需要繪制的墻體包括:200mm外墻、200mm內墻和100mm內墻。 1. 外墻(200mm)繪制 點擊【建筑】選項卡→點擊【墻:結構】。 選擇直線繪制工具,設置參數如下:

動畫-animation

動畫1.keyframes規則2.animation屬性Webkit內核的瀏覽器&#xff08;Safari,chrome&#xff09;需要加-webit-前綴。持續時間&#xff1a;animation-duration-webkit-animation-duration時間函數&#xff1a;animation-timing-function-webkit-animation-timing-function延遲時…

供應鏈攻擊日益嚴重,微軟開源 SBOM 生成工具 Salus

Software Package Data Exchange&#xff08;SPDX&#xff09;規范作為ISO/IEC 5962:2021發布&#xff0c;被認定為安全性、許可合規和其他軟件供應鏈構件領域的國際開放標準。ISO/IEC JTC 1是一個獨立的非政府標準機構。包括英特爾、微軟、西門子、索尼、新思科技、VMware和Wi…

01 冒泡排序

####定義: 冒泡排序(bubble sort):是一種簡單的排序算法.它重復的走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來.走訪數列的工作就是重復的進行直到不需要交換,也就是這個數列已經排序完成.這個算法的由來是因為越小的元素由交換慢慢"浮"到…

python 讀取json為list及向json文件追加數據

""" 讀取json數據到list """ def read_json_list(json_file):if not (os.path.exists(json_file) and os.path.isfile(json_file)):with open(json_file, w) as f:f.write([])with open(json_file, r, encodingutf-8) as f:try:school_list jso…

【BIM入門實戰】建筑墻體知識全攻略

墻體是建筑重要構成部分,墻體的主要作用就是承重、圍護、分割。所以,穩定、保溫、隔熱、隔聲這些是基本要求。 一、墻體分類 1. 墻體依其在房屋所處位置的不同,有內墻、外墻、其他墻之分 (1)外墻:凡位于建筑物外界的墻稱為外墻。外墻是房屋的外圍護結構,起著擋風、阻雨…

iOS AVPlayer 簡單應用

//1 AVPlayerViewController *avvc [[AVPlayerViewController alloc] init]; //2 avvc.player [[AVPlayer alloc] initWithURL:url]; //3 [self presentViewController:avvc animated:YES completion:nil]; 轉載于:https://www.cnblogs.com/fuxx/p/6378957.html

2012 Multi-University #8

DP單調隊列優化 E One hundred layer 題意&#xff1a;&#xff4e;&#xff0a;&#xff4d;的矩形&#xff0c;從第一層&#xff58;位置往下走&#xff0c;每一層都可以往左或往右移動最多&#xff4b;步再往下走&#xff0c;問走到&#xff4e;層時所走路徑的最大值&#x…

如何進行「小步重構」?

大家好&#xff0c;我是Z哥。關于重構的文章之前也寫過兩篇&#xff1a;《接手歷史悠久的老項目&#xff0c;干or跑&#xff1f;》《好的重構方法才能擺脫“屎山”》但是這兩篇主要講的是重構的方式方法。在 Z 哥看來&#xff0c;除了方式和方法還有一個點對于重構這件事來說也…

【BIM入門實戰】Revit 2018幕墻的繪制與注意事項

一、幕墻概述 1. 定義 幕墻是建筑的外墻圍護&#xff0c;不承重&#xff0c;像幕布一樣掛上去&#xff0c;是現代大型和高層建筑常用的帶有裝飾效果的輕質墻體。由面板和支承結構體系組成的&#xff0c;可相對主體結構有一定位移能力或自身有一定變形能力、不承擔主體結構所作…

微信小程序之登錄

直接獲取用戶數據wx.getUserInfo({success: function (res) {var userInfo res.userInfoconsole.log("獲取登錄用戶的所有信息")console.log(res.userInfo)}}) 復制代碼如果用戶拒絕&#xff0c;提示模態框&#xff0c;點擊確定&#xff0c;進入設置&#xff0c;再次…

對象、字節流轉換

數據表示時間   長度&#xff08;字節&#xff09;   數據類型   描述及要求平臺登入時間   6        BYTE[6] &#xff08;每個字節分別代表&#xff1a;年、月、日、時、分、秒&#xff09;登入流水號 2        WORD    每登入一…

【BIM入門實戰】Revit 圖元分類有哪三種?Revit圖元分類圖文詳解

Revit在項目中使用3種類型的圖元:模型圖元、基準圖元和視圖專有圖元。 Revit中的圖元也稱為族。族包含圖元的幾何定義和圖元所使用的參數。圖元的每個實例都由族定義和控制。 1. 模型圖元 模型圖元表示建筑的實際三維幾何圖形,包括如下:墻、窗、門和屋頂,結構墻、樓板、坡…

跟益達學Solr5之solrconfig.xml配置詳解

solrconfig.xml配置文件中包含了很多solr自身配置相關的參數,solrconfig.xml配置文件示例可以從solr的解壓目錄下找到&#xff0c;如圖&#xff1a; 用文本編輯軟件打開solrconfig.xml配置&#xff0c;你將會看到以下配置內容&#xff1a; Xml代碼 <?xml version"1.…

.NET 7 新增速率限制 (Rate Limiting) 功能,輕松限制請求數量

前言.NET 7 內置了速率限制&#xff08;Rate Limiting&#xff09;功能&#xff0c;速率限制指的是限制可訪問資源的請求數。例如數據庫每分鐘可以安全處理 1000 個請求&#xff0c;再多不確定會不會崩。這時就可以在應用程序中放一個速率限制器&#xff0c;規定每分鐘只允許 …

Cmder集成到VS Code (新舊版設置不同)

1.55版本之前 "terminal.integrated.shell.windows": "cmd.exe","terminal.integrated.shellArgs.windows": ["/k", "d:\\cmder\\cmdermini\\vendor\\init.bat"],1.55版本之后 "terminal.integrated.profiles.windows&…

Linux Tomcat8 啟動堆內存溢出

今天在部署一個開源項目的時候&#xff0c;Tomcat8啟動異常&#xff0c;報錯信息&#xff1a; Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: PermGen space 根據報錯信息我們可以看出是堆內存不夠。所以需要手動設置堆內存大小&…

【BIM入門實戰】Revit視圖中圖元看不見的原因總結

在Revit模型設計的過程中&#xff0c;有時會提示繪制的圖元不可見&#xff0c;通常情況下&#xff0c;可以采用以下三種方法讓隱藏的圖元顯示出來。 原因一&#xff1a;視圖范圍 平面視圖的形成是由操作平面對三維進行 水平切割的俯視圖&#xff0c;如果繪制的圖元不可見&…