1. 程式人生 > >uva10375 選擇與除法 唯一分解定理

uva10375 選擇與除法 唯一分解定理

  1. 對數進行分解方便有效的約分。
  2. 唯一分解定理:一個數總是有素數的乘積構成。
#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