分解質因數-洛谷P3200 [HNOI2009]有趣的數列

https://www.luogu.org/problem/show?pid=3200
首先,我們不能保證要求的數的逆元和模域互質;
所以我們要用分解質因數來抵消除法;
其實逆元的話即使可行也會超時;
那么我轉載了,實在沒什么可以說的;
另外卡特蘭數
http://baike.baidu.com/link?url=St3mmth0khr1jUoD9Vwdroupnfajo6hhTSgwvOkjAPrP0Htt12nZjsMue4T_5JhMopRqlhgAkCt2dDzd378Kg8xjsSYwGn3J_CMLgsvI4Psdhj3z0s4zTucxc1v6dRlP
話說這個方法好巧妙啊
http://blog.csdn.net/jiangshibiao/article/details/24009239
【轉化】就是求卡特蘭數。
【初始代碼】

#include<cstdio>  
using namespace std;  
typedef long long ll;  
ll prime[200005],a[200005];  
bool f[2000005];  
ll temp,n,p,i,j,cnt,mod;  
ll pow(ll a,ll b)  
{  ll ans;  for (ans=1;b;b>>=1,a=a*a%mod)   if (b&1) ans=ans*a%mod;  return ans;  
}  
int main()  
{  scanf("%lld%lld",&n,&mod);  for (i=2;i<=n*2;i++)  {  if (!f[i]) prime[++cnt]=i;  for (j=1;j<=cnt&&prime[j]*i<=n*2;j++)  f[prime[j]*i]=true;  }  for (i=n+2;i<=n*2;i++)  for (j=1,p=i;j<=cnt&&p;j++)  while (p%prime[j]==0) a[j]++,p/=prime[j];  for (i=2;i<=n;i++)  for (j=1,p=i;j<=cnt&&p;j++)  while (p%prime[j]==0) a[j]--,p/=prime[j];  temp=1;  for (j=1;j<=cnt;j++)  if (a[j]) temp=(temp*pow(prime[j],a[j]))%mod;  printf("%lld",temp);for (;;);  return 0;  
}  

用歐拉篩法,O(n)的效率求出每個質數。然后枚舉階乘,像質數表一樣把一個數給分解。但是效率很低。
【優化1】如果一個數是合數,我們可以把它的某個因子記下來。然后我們同樣從開始枚舉階乘,而且是倒著枚舉。對于每個數,如果它是合數,我就把它分解。比如,設f[n]為結果中含有n因子的個數。u是n的一個約數。那么我們可以f[u]+=f[n],f[n/u]+=f[n]。這樣就不用多次用快速冪了。直到n是質數為止。
【優化2】開始可以把1–n的f[i]設為-1,把n+2–2*n(注意,最后要除n+1,所以從n+2開始)的f[i]設為1.這樣只需1次循環。
【AC代碼】

#include<cstdio>  
using namespace std;  
typedef long long ll;  
ll prime[200005],a[2000005],come[2000005];  
ll temp,n,p,i,j,cnt,mod;  
ll pow(ll a,ll b)  
{  ll ans;  for (ans=1;b;b=b/2,a=a*a%mod)   if (b&1) ans=ans*a%mod;  return ans;  
}  
int main()  
{  scanf("%lld%lld",&n,&mod);  for (i=2;i<=n*2;i++)  {  if (!come[i]) prime[++cnt]=i;     for (j=1;j<=cnt&&prime[j]*i<=n*2;j++)  come[prime[j]*i]=i;  }  temp=1;  for (i=2;i<=n;i++) a[i]=-1;  for (i=n+2;i<=2*n;i++) a[i]=1;  for (i=n*2;i>1;i--)  if (come[i])  {  a[come[i]]+=a[i];  a[i/come[i]]+=a[i];  }  else  temp=temp*pow(i,a[i])%mod;  printf("%lld",temp);  return 0;  
}  

轉載于:https://www.cnblogs.com/largecube233/p/6797912.html

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

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

相關文章

Java中的安全加密

上一次我寫關于密碼學的文章時 &#xff0c;我概述了Apache Shiro加密API&#xff0c;并展示了如何使用其兩個對稱密碼。 我還寫道&#xff1a;“您不需要在應用程序中對敏感數據進行加密和解密。” 我了解了更多有關密碼的知識&#xff0c;發現您需要了解更多信息。 我寫的內容…

真機調試問題

1.拔掉插頭重新插入 2.轉載于:https://www.cnblogs.com/sanvow/p/5633976.html

vsftp

它的配置文件在/etc/vsftpd/vsftpd.conf在里面加入 anonymous_enableYES &#xff03;允許匿名用戶登錄FTPanon_upload_enableYES &#xff03;打開匿名用戶的上傳權限anon_mkdir_write_enableYES &#xff03;打開匿名用戶創建目錄的權限anon_other_write_enableYES …

java scrollpane源碼_JScrollPane用法 Java實例

時間&#xff1a;2019-10-07概述&#xff1a;JScrollPane 滾動條在Java中使用JScrollPane的例子&#xff0c;特別是滾動條的設置等&#xff0c;程序代碼中將設置水平與垂直表頭、設置scrollPane的邊角圖案、設置scrollPane的邊框凹陷立體邊框。適時水平滾動軸的參數設置等內容&…

ANTLR教程– Hello Word

Antlr代表另一種語言識別工具。 該工具能夠為任何計算機語言生成編譯器或解釋器。 除了明顯的用途&#xff08;例如需要解析一種真正的“大型”編程語言&#xff0c;例如Java&#xff0c;PHP或SQL&#xff09;外&#xff0c;它還可以幫助執行更小&#xff0c;更常見的任務。 每…

centOS 6.5安裝python和nginx

一、安裝python3.5 1、安裝python3.5 2、安裝pip并升級到最新 下載wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz 注意&#xff1a;wget獲取https的時候要加上&#xff1a;--no-check-certificate tar zvxf 1.5.5.tar.gz #解壓文件 cd pip…

rabbitmq 學習-9- RpcClient發送消息和同步接收消息原理

rabbitmq 學習-9- RpcClient發送消息和同步接收消息原理 轉載于:https://www.cnblogs.com/gotodsp/p/6532824.html

匯編寫java模塊_java – maven匯編插件moduleset源指令不包括任何文件,不符合附帶的模塊...

我有一個多模塊的maven項目,我正在嘗試獲取組件插件的moduleset源部分.我有模塊“module_parent”,“module_a”和“module_assembly”.module_a和module_assembly是module_parent的子項.module_assembly對module_a有一個聲明的pom依賴關系.module_assmebly具有程序集插件,asse…

用于RIA的JavaFX 2與HTML5

這些天來&#xff0c;我們正在啟動一個新項目&#xff0c;以實現Rich Internet Application&#xff08;RIA&#xff09; 。 第一個問題是&#xff1a;我們應該使用哪些技術和框架&#xff1f; 后端將是Java或其他現代JVM語言&#xff0c;因為我們主要是經驗豐富的Java開發人員…

插件化編程實現的一份糖炒栗子~~

迷茫的原因是因為想得太多&#xff0c;做得太少。因為只是 想 真的很容易&#xff0c;轉瞬之間就會產生無數個念頭&#xff0c;或許是該做點什么了吧。 但是整個人都是懶的&#xff0c;是廢的&#xff0c;是大腦控制不住自己的行為的。解決方案唯有一步一步的去把行為變成習慣。…

用C#來學習唐詩三百首和全唐詩

Begin 最近把項目做完了&#xff0c;閑來無事&#xff0c;就想做點好玩的事情&#xff0c;剛好前幾天下載了【唐詩三百首】和【全唐詩】這兩個txt文件&#xff0c;正好用C#來整理一下。 然后導出QData格式&#xff0c;可以給其他軟件讀取。 以后弄個開機自動顯示一句詩&#xf…

JRockit JRCMD教程

本文將為您提供概述和教程&#xff0c;說明如何使用jrcmd工具對JRockit Java Heap問題進行初始分析和問題隔離。 將來的文章中將介紹使用JRockit任務控制和堆轉儲分析&#xff08;僅限JRockit R28 版&#xff09;的更深入的分析和教程。 有關JRockit Java堆空間的快速概述&…

sts java配置tomcat_STS配置Tomcat.9.0

今天&#xff0c;心血來潮&#xff0c;弄了一下STS,按著建立WEB項目的方式建立工程。一、新建工程(FILE --NEW--Dynamic Web project)二、輸入項目名稱&#xff0c;TestWeb&#xff0c;然后下一步&#xff0c;點擊FInish.三、新建index.jsp并打開index.jsp,書寫測試成功&#x…

javaweb國際化

根據數據的類型不同&#xff0c;國際化分為2類&#xff1a;靜態數據國際化和動態數據的國際化。 靜態數據&#xff0c;包括 “標題”、“用戶名”、“密碼”這樣的文字數據。 動態數據&#xff0c;包括日期、貨幣等可以動態生成的數據。 國際化涉及到java.util.Locale和java.ut…

20145335郝昊《網絡攻防》Bof逆向基礎——ShellCode注入與執行

20145335郝昊《網絡攻防》Bof逆向基礎——ShellCode注入與執行 實驗原理 關于ShellCode&#xff1a;ShellCode是一段代碼&#xff0c;作為數據發送給受攻擊服務器&#xff0c;是溢出程序和蠕蟲病毒的核心&#xff0c;一般可以獲取權限。我們將代碼存儲到對方的堆棧中&#xff0…

Java枚舉益智游戲

假設我們有以下代碼&#xff1a; enum Case {CASE_ONE,CASE_TWO,CASE_THREE;private static final int counter;private int valueDependsOnCounter;static {int sum 0;for(int i 0; i<10; i) {sum i;}counter sum;} Case() {this.valueDependsOnCounter counter*counte…

jp在java中無法編譯_JPanal上加圖片的問題!

JPanal上加圖片的問題&#xff01;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.*;import java.awt.*;public class Frame1 extends JFrame {JPanel contentPane;JLabel jLabel1 new JLa…

玩轉Android之加速度傳感器的使用,模仿微信搖一搖

Android系統帶的傳感器有很多種&#xff0c;最常見的莫過于微信的搖一搖了&#xff0c;那么今天我們就來看看Anroid中傳感器的使用&#xff0c;做一個類似于微信搖一搖的效果。 OK ,廢話不多說&#xff0c;我們就先來看看效果圖吧&#xff1a; 當我搖動手機的時候這里的動畫效果…

圖像

背景圖案的設置 將圖片插入到網頁中去 用圖像作為超鏈接 使用工具建立地圖索引 切片索引 為網站添加圖標 5.1 背景圖案的設置&#xff08;背景不占位置&#xff0c;不影響文本的輸入&#xff09; 格式&#xff1a;<body background"URL"> 5.2 將圖片插入…

Maven構建依賴項

熟悉發行版和快照依賴項的Maven和Gradle用戶可能不了解TeamCity快照依賴項&#xff0c;或者認為他們與Maven相關&#xff08;這是不正確的&#xff09;。 熟悉工件和快照依賴關系的TeamCity用戶可能不知道&#xff0c;除了TeamCity提供的插件之外&#xff0c;添加Artifactory插…