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】口算訓練/二分/質因數分解
- HDU 4135 Co-prime(容斥原理+分解質因數)
- hdu 5698 瞬間移動 【質因數分解求組合數】
- 階乘質因數分解
- 分解質因數的誤區
- Just for fun——分解一個正整數的質因數
- P1075 [NOIP2012 普及組] 質因數分解
- 藍橋杯題庫 BASIC-16 分解質因數
- python將輸入的一個正整數分解質因數(map)Python
- 第六章 數學問題 -------- 6.12 素數及質因數分解
- 【HDU - 1792】A New Change Problem(推公式、互質數的最大不能表示數)公式
- 質數判斷、質因子分解、質數篩
- 大質數分解模板
- Java分解質因數,如輸入8,輸出8=2*2*2Java
- 【快速因數分解】Pollard's Rho 演算法演算法
- 求最大質因數
- 第七章:因數分解與算數基本定理(1)
- 第七章:因數分解與算數基本定理(2)
- 南沙信奧塞陳老師解一本通題:2032:【例4.18】分解質因數
- 分解質因數——MOOC《零基礎學Java語言》第7周程式設計題1Java程式設計
- 1366: 分解質因子
- 微課|中學生可以這樣學Python(例6.4):因數分解Python
- 因數分解演算法、週期查詢演算法(簡化)演算法
- C# 輸入一個整數,求質因數C#
- HDU 6035 Colorful Tree(樹形DP)
- §3. 復變數的指數函式·尤拉公式變數函式公式
- 醜數,即只包含質因數 2、3 和 5 的正整數。
- 數學公式公式
- 整數因子分解問題
- 記一次,因表變數導致SQL執行效率變慢變數SQL
- HDU 6415 (計數dp)
- hdu2084數塔
- 一文學會RCA根因分析法,變身質控能手!
- Jordan標準形2——如何把空間V分解成A的不變子空間的直和
- 記一次因為共享變數的犯錯誤變數
- Python實用技法第1篇:可迭代物件分解為單獨的變數Python物件變數
- three.js 著色器材質之變數(二)JS變數
- three.js 著色器材質之變數(一)JS變數
- three.js 著色器材質內建變數JS變數