HDU 1299 Diophantus of Alexandria (公式變形 分解質因數)
Diophantus of Alexandria
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2931 Accepted Submission(s): 1132
Problem Description
Diophantus of Alexandria was an egypt mathematician living in Alexandria. He was one of the first mathematicians to study equations where variables were restricted to integral values. In honor of him,
these equations are commonly called diophantine equations. One of the most famous diophantine equation is x^n + y^n = z^n. Fermat suggested that for n > 2, there are no solutions with positive integral values for x, y and z. A proof of this theorem (called
Fermat's last theorem) was found only recently by Andrew Wiles.
Consider the following diophantine equation:
1 / x + 1 / y = 1 / n where x, y, n ∈ N+ (1)
Diophantus is interested in the following question: for a given n, how many distinct solutions (i. e., solutions satisfying x ≤ y) does equation (1) have? For example, for n = 4, there are exactly three distinct solutions:
1 / 5 + 1 / 20 = 1 / 4
1 / 6 + 1 / 12 = 1 / 4
1 / 8 + 1 / 8 = 1 / 4
Clearly, enumerating these solutions can become tedious for bigger values of n. Can you help Diophantus compute the number of distinct solutions for big values of n quickly?
Consider the following diophantine equation:
Diophantus is interested in the following question: for a given n, how many distinct solutions (i. e., solutions satisfying x ≤ y) does equation (1) have? For example, for n = 4, there are exactly three distinct solutions:
1 / 6 + 1 / 12 = 1 / 4
1 / 8 + 1 / 8 = 1 / 4
Clearly, enumerating these solutions can become tedious for bigger values of n. Can you help Diophantus compute the number of distinct solutions for big values of n quickly?
The first line contains the number of scenarios. Each scenario consists of one line containing a single number n (1 ≤ n ≤ 10^9).
The output for every scenario begins with a line containing "Scenario #i:", where i is the number of the scenario starting at 1. Next, print a single line with the number of distinct solutions of equation
(1) for the given value of n. Terminate each scenario with a blank line.
2
4
1260
Scenario #1:
3
Scenario #2:
113
TUD Programming Contest 2006
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1299
題目大意:給出n,求滿足1/x + 1/y = 1/n的(x,y)的對數,(x,y)與(y,x)屬於同一種
題目分析:1/x + 1/y = 1/n => xy - nx - ny = 0 => n^2 + xy - nx - ny = n^2 => (n - x)(n - y) = n^2,問題轉化為求n^2的因子數,由唯一分解定理可以得到:設p1,p2...pk為n的質因子a1,a2...ak,為質因子的冪,則n^2因子數為(2*a1 + 1)*(2*a2 + 1)*...*(2*ak + 1),注意當n為質數時根據公式要乘3,考慮去掉重複的最後答案除2加1
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1299
題目大意:給出n,求滿足1/x + 1/y = 1/n的(x,y)的對數,(x,y)與(y,x)屬於同一種
題目分析:1/x + 1/y = 1/n => xy - nx - ny = 0 => n^2 + xy - nx - ny = n^2 => (n - x)(n - y) = n^2,問題轉化為求n^2的因子數,由唯一分解定理可以得到:設p1,p2...pk為n的質因子a1,a2...ak,為質因子的冪,則n^2因子數為(2*a1 + 1)*(2*a2 + 1)*...*(2*ak + 1),注意當n為質數時根據公式要乘3,考慮去掉重複的最後答案除2加1
#include <cstdio>
#define ll long long
int const MAX = 4e5 + 5;
int p[MAX], pfac[MAX];
bool noprime[MAX];
int pnum, pfacnum, n;
ll ans;
void get_prime()
{
pnum = 0;
for(int i = 2; i < MAX; i++)
{
if(!noprime[i])
p[pnum ++] = i;
for(int j = 0; j < pnum && i * p[j] < MAX; j++)
{
noprime[i * p[j]] = true;
if(i % p[j] == 0)
break;
}
}
}
void get_pfac()
{
pfacnum = 0;
for(int i = 2; i * i <= n; i++)
{
int cnt = 0;
if(n % i == 0)
{
pfac[pfacnum ++] = i;
while(n % i == 0)
{
cnt ++;
n /= i;
}
}
if(cnt)
ans *= (ll) (2 * cnt + 1);
}
}
int main()
{
get_prime();
int T;
scanf("%d", &T);
for(int ca = 1; ca <= T; ca++)
{
ans = 1;
scanf("%d", &n);
get_pfac();
if(n > 1)
ans *= 3ll;
printf("Scenario #%d:\n%I64d\n\n", ca, (ans + 1) >> 1);
}
}
相關文章
- HDU 4135 Co-prime(容斥原理+分解質因數)
- 階乘質因數分解
- 藍橋杯題庫 BASIC-16 分解質因數
- POJ1142 Smith Numbers(數論,分治+暴力,質因數分解)MIT
- python將輸入的一個正整數分解質因數(map)Python
- 質數判斷、質因子分解、質數篩
- 大質數分解模板
- Java分解質因數,如輸入8,輸出8=2*2*2Java
- HDU 4497GCD and LCM(素數分解)GC
- 【HDU - 1792】A New Change Problem(推公式、互質數的最大不能表示數)公式
- P1075 [NOIP2012 普及組] 質因數分解
- HDU44979 GCD and LCM (素因子分解+計數)GC
- 求最大質因數
- 【快速因數分解】Pollard's Rho 演算法演算法
- Codeforces 893E Counting Arrays:dp + 線性篩 + 分解質因數 + 組合數結論
- HDU1792(公式)公式
- UVA 10892 LCM Cardinality (分解因數+暴力)
- HDU 1588 斐波那契數列數列變形和矩陣連乘矩陣
- 分解質因數——MOOC《零基礎學Java語言》第7周程式設計題1Java程式設計
- 南沙信奧塞陳老師解一本通題:2032:【例4.18】分解質因數
- HDU 2662 Coin && HDU 1792 A New Change Problem (互質數最大不能生成數)
- 因數分解演算法、週期查詢演算法(簡化)演算法
- C# 輸入一個整數,求質因數C#
- HDU 5317 RGCDQ (素因子分解+預處理)GC
- POJ 2773 Happy 2006 (分解質因數+容斥+二分 或 歐幾里德演算法應用)APP演算法
- 微課|中學生可以這樣學Python(例6.4):因數分解Python
- HDU 4686 (推公式+矩陣快速冪)公式矩陣
- HDU 3221Brute-force Algorithm(降冪公式 神似hdu4549)Go公式
- HDU 1792-A New Change Problem(互質數的最大不能表示數)
- 醜數,即只包含質因數 2、3 和 5 的正整數。
- §3. 復變數的指數函式·尤拉公式變數函式公式
- hdu5371 最長迴文子串變形(Manacher演算法)演算法
- HDU 4565 So Easy!(公式化簡+矩陣)公式矩陣
- HDU 2685 I won't tell you this is about number theory (數論 公式 快速冪取模)公式
- 數學公式公式
- 一文學會RCA根因分析法,變身質控能手!
- 記一次,因表變數導致SQL執行效率變慢變數SQL
- Codeforces 235B Let's Play Osu! (概率dp求期望+公式變形)公式