最大公约数 数学,结论 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
鏈接:https://ac.nowcoder.com/acm/contest/27302/I
來源:牛客網
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
題目描述
雯雯沉迷學習數學無法自拔,他在閉關修煉中遇到了難題,聰明的你能幫他解答嗎?
現在給你一個NN個數的序列PP,定義XX為這NN個數的最大公因數,你可以進行無限次操作,每次操作選擇一組(L,R)(L,R) ( 1 \le L \neq R \le N,P_L\ge1)(1≤L
?
=R≤N,P
L
?
≥1),使得P_L-1P
L
?
?1且P_R+1P
R
?
+1,每次操作產生新的序列PP。請問所有可能產生的PP對應的XX最多有多少個。AC者可憑RP獲得雯雯簽名照一張。
定義:AA是序列PP的一個公因數當且僅當序列PP的每一個元素都能被A整除,且A\ge1A≥1。
注意:本題規定任何正整數都是0的公因數。
輸入描述:
第一行包含一個數NN,其中2 \le N \le 5002≤N≤500。
第二行為長度為NN的一個序列,其中序列元素PP滿足
1 \le P \le 10^{6}1≤P≤10
6
。
輸出描述:
輸出包括一個整數,表示所有序列產生的最大公因數的個數。
示例1
輸入
復制
3
1 1 2
輸出
復制
3
說明
第一次操作,L=1,R=2L=1,R=2,操作后P=0,2,2P=0,2,2,此時PP的最大公因數為22。
第二次操作,L=2,R=3L=2,R=3,操作后P=0,1,3P=0,1,3,此時PP的最大公因數為11。
第三次操作,L=2,R=3L=2,R=3,操作后P=0,0,4P=0,0,4,此時PP的最大公因數為44。
經過若干次操作后,序列PP產生的最大公因數為11,22,44,共33個。
思路 :
- 記sumsumsum為整個序列和,易知每次操作,sum都不改變
- 假設操作后的子序列為aaa,x為最大公因數,則一定存在序列kkk,使得∑ai=x?∑kj\sum{a_i}=x*\sum{k_j}∑ai?=x?∑kj?
- 即,sum=x?∑kisum=x*\sum{k_i}sum=x?∑ki?,由于sum始終不變,因此求最大公因數的不同數量,也就是x的不同數量,等價于sum的因子數量
總結
以上是生活随笔為你收集整理的最大公约数 数学,结论 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特征值 模拟 第九届“图灵杯”NEUQ-
- 下一篇: WireConnection 最小生成树