uva10375 選擇與除法 唯一分解定理
- 對數進行分解方便有效的約分。
- 唯一分解定理:一個數總是有素數的乘積構成。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<iostream>
using namespace std;
const int maxn = 10000;
vector<int> primes;
int e[maxn];
// 乘以或除以n. d=1表示乘,d=-1表示除
void add_integer(int n, int d) {
for (int i = 0; i < primes.size(); i++) {
while(n % primes[i] == 0) {
n /= primes[i];
e[i] += d;
}
if(n == 1) break; // 提前終止迴圈,節約時間
}
}
void add_factorial(int n, int d) {
for(int i = 1; i <= n; i++)
add_integer(i, d);
}
bool is_prime(int n) {
int m = sqrt(n);
if(n==1 || n==0) return false;
if(n%2==0 && n!=2) return false;
for(int a = 2; a <= m; a++)
if(n % a == 0) return false;
return true;
}
int main() {
for(int i = 2; i <= 10000; i++)
if(is_prime(i)) primes.push_back(i);
int p, q, r, s;
while(cin >> p >> q >> r >> s) {
memset (e, 0, sizeof(e));
add_factorial(p, 1);
add_factorial(q, -1);
add_factorial(p-q, -1);
add_factorial(r, -1);
add_factorial(s, 1);
add_factorial(r-s, 1);
double ans = 1;
for(int i = 0; i < primes.size(); i++)
ans *= pow(primes[i], e[i]);
printf("%.5lf\n", ans);
}
return 0;
}
相關推薦
uva10375 選擇與除法 唯一分解定理
對數進行分解方便有效的約分。 唯一分解定理:一個數總是有素數的乘積構成。 #include<cstdio> #include<cstring> #include<
UVa10375 選擇與除法(唯一分解定理)
解析:其中primes是前1000個素數,e陣列存放每個素數對應的指數。 程式碼例項: #include<iostream> #include<cstring> #inc
uva10375 Choose and Divide(唯一分解定理)
題意:已知C(m,n)=m! / (n!*(m-n!)),輸入整數p,q,r,s(p>=q,r>=s,p,q,r,s<=10000),計算C(p,q)/C(r,s)。輸出保證不超過10^8,保留5位小數 解題思路: 初步分析,本題時間上基本上沒有太大的限
uva10375 唯一分解定理
把算式用逆元換算成多個因子連乘 然後分別計算每個因子的值存入素數冪陣列unique arr中 由於乘法的性質 最後把素數冪乘上每個素數就是算式的值 不能用快速冪 因為快速冪的冪次不能未負 想學唯一分解定理嗎 我把它放在我的部落格裡了,想要的化就來翻吧。 #include
數論-輾轉相除法、唯一分解定理
沒有數學就沒有演算法;沒有好的數學基礎,也很難在演算法上有所成就。 數論被數學王子高斯譽為整個數學王國的皇后。數論是純粹數學的分支之一,主要研究整數的性質。從研究方法來看,數論大致可分為初等數論和高等數論。初等數論是用初等方法研究的數論,它的研究方法本質上說,就是利用整數環
素數的判斷方法與唯一分解定理
1.常規的方法,判斷從2到sqrt(n),是否存在可以被n整除的。 時間複雜度為O(n^2) 2.素數篩法,2開始,2的倍數肯定不是素數,再向右掃描,直到限制處,如果掃描到素數 (記錄下來),重複之前
【數論】Choose and Divide, UVa10375 【組合數學】【唯一分解定理】【精度】
唯一分解定理 #include<bits/stdc++.h> using namespace std; int p,q,r,s,prime[10005],cnt,e[10005];boo
UVa10375(唯一分解定理)
例題10-3 選擇與除法(Choose and Divide, UVa10375) 已知C(m,n) = m!/(n!(m-n)!),輸入整數p, q, r, s(p≥q,r≥s,p,q,r,s≤10
[ACM] HDU 3398 String (從座標0,0走到m,n且不能與y=x-1相交的方法數,整數唯一分解定理)
String Problem Description Recently, lxhgww received a task : to generate strings contain '0's and '1's only, in which '0' appears exact
LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)
void 都是 scanf esp for space tar sqrt lld http://lightoj.com/volume_showproblem.php?problem=1341 題意:給你矩形的面積(矩形的邊長都是正整數),讓你求最小的邊大於等於b的矩形的個
HDU 1452 Happy 2004(唯一分解定理)
ring esp 鏈接 href names 全部 namespace 傳送門 http 題目鏈接:傳送門 題意: 求2004^x的全部約數的和。 分析: 由唯一分解定理可知 x=p1^a1*p2^a2*...*pn^an 那麽其約數和 sum = (p1^0+p1^1
hdu 1215 求約數和 唯一分解定理的基本運用
span pac pid vector type == 素數 ring 題意 http://acm.hdu.edu.cn/showproblem.php?pid=1215 題意:求解小於n的所有因子和 利用數論的唯一分解定理。 若n = p1^e1 * p2^e2 * ……
數論初步——歐幾裏得算法和唯一分解定理
turn 算法 true font 輾轉相除法 div 公式 分解 16px 具體內容參見紫書p310-p312 一、輾轉相除法 恒等式:gcd(a,b) = gcd(b,a%b) 邊界條件:gcd(a,0) = a 輾轉相除法的關鍵(恒等式)和邊界條件一起構成了下
FJUT OJ 2121 唯一分解定理
out spa sync for 素數 可能 bsp while clas Problem Description 實現整數的唯一分解 Input 多組測試數據 每組數據輸入一個整數n(2<=n<=1012) Output 每組數據輸出一行,
UVa 10375 - Choose and divide(唯一分解定理)
ide clas 數組 AI AS lin buffered ring buffere 鏈接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_p
H - Pairs Forming LCM(唯一分解定理)
align urn RM ctu rim tin div ans mes Find the result of the following code: long long pairsFormLCM( int n ) { long long res = 0; f
唯一分解定理
分解 clas 一點 基本 #define lld main ++ rim 1.唯一分解定理,也叫算術基本定理,指的是任何n>=2,都可以分解為n=p1*p2*p3*.....pn,其中pi為質數。 其包括兩個斷言:斷言1:數n可以以某種方式分解成素數乘積。
【數論】Sumdiv(整數的唯一分解定理+約束和公式+遞歸求等比)
ali 同余模公式 left 一個 c++ 出現 素數分解 code 特殊 來源:https://blog.csdn.net/lyy289065406/article/details/6648539 題目描述 Consider two natural numbers A a
唯一分解定理入門講解
.... 因子和 under 會有 進行 小應用 素數 應用 都是 唯一分解定理 一個數n肯定能被分解成 n=p1^a1 * p2^a2 . . .*pn^an 因為一個數肯定是由合數和質數構成的,合數又可以分解成質數和合數,最後遞歸下去就會變成質數的乘積 如 36 -
POJ - 1845 G - Sumdiv (唯一分解定理)
容易 題目 separate ans pri oid 每一個 nbsp clu Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine