Diophantus of Alexandria

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2269    Accepted Submission(s): 851

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?

 
Input
The
first line contains the number of scenarios. Each scenario consists of
one line containing a single number n (1 ≤ n ≤ 10^9).
 
Output
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.
 
Sample Input
2
4
1260
 
Sample Output
Scenario #1:
3

 
Scenario #2:
113
 
 
Source
 
Recommend
JGShining   |   We have carefully selected several similar problems for you:  1788 1905 3049 1576 1402
 
这题数论求的是 数的因子个数,设数为n,其可表示为
n=p1^r1 * p2^r2 * . . . * pn^rn
其中,p为素数,且可知其n的因子个数
k=(r1+1)*(r2+2)*...*(rn+1);
 
又由题可得,
1/x+y/1=1/n  ==> 
x>n && y>n   ==> 
xy=nx+ny,设y=n+k,x=n*(n+k)/k,即所求为n*n的因子个数
k=(2*r1+1)*(2*r2+2)*...*(2*rn+1);
 
注意结果要求多少对,故ans=k/2+1;
 //140MS    200K    622 B    G++
#include<stdio.h>
#include<math.h>
long long solve(int n)
{
long long ans=;
int i;
int m=(int)sqrt(n+0.5);
for(i=;i<=m;i++){
int ret=;
if(n%i==){
n/=i;
while(n%i==){
n/=i;ret++;
}
ans*=(*ret+);
}
if(n<i) break;
}
if(n>) ans*=;
return ans;
}
int main(void)
{
int n;
int cas=,t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("Scenario #%d:\n%lld\n",cas++,solve(n)/+);
printf("\n");
}
return ;
}
 

hdu 1299 Diophantus of Alexandria (数论)的更多相关文章

  1. hdu 1299 Diophantus of Alexandria(数学题)

    题目链接:hdu 1299 Diophantus of Alexandria 题意: 给你一个n,让你找1/x+1/y=1/n的方案数. 题解: 对于这种数学题,一般都变变形,找找规律,通过打表我们可 ...

  2. hdu 1299 Diophantus of Alexandria

    1/x + 1/y = 1/n 1<=n<=10^9给你 n 求符合要求的x,y有多少对 x<=y// 首先 x>n 那么设 x=n+m 那么 1/y= 1/n - 1/(n+ ...

  3. hdoj 1299 Diophantus of Alexandria

    hdoj 1299 Diophantus of Alexandria 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1299 题意:求 1/x + 1/y ...

  4. 数学--数论--HDU 1299 +POJ 2917 Diophantus of Alexandria (因子个数函数+公式推导)

    Diophantus of Alexandria was an egypt mathematician living in Alexandria. He was one of the first ma ...

  5. HDU 1299 基础数论 分解

    给一个数n问有多少种x,y的组合使$\frac{1}{x}+\frac{1}{y}=\frac{1}{n},x<=y$满足,设y = k + n,代入得到$x = \frac{n^2}{k} + ...

  6. hdu Diophantus of Alexandria(素数的筛选+分解)

    Description Diophantus of Alexandria was an egypt mathematician living in Alexandria. He was one of ...

  7. Hdu 1299

    Diophantus of Alexandria Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  8. Diophantus of Alexandria[HDU1299]

    Diophantus of Alexandria Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...

  9. Diophantus of Alexandria

    Diophantus of Alexandria was an egypt mathematician living in Alexandria. He was one of the first ma ...

随机推荐

  1. mysql load data 乱码的问题

    新学mysql在用load data导入txt文档时发现导入的内容,select 之后是乱码,先后把表,数据库的字符集类型修改为utf8,但还是一样,最后在 http://bbs.chinaunix. ...

  2. 一些不错的学习资料(node)

    Node.js的api中文文档 http://expressjs.jser.us/ 关于Node.js的一系列不错的学习文章 http://blog.fens.me/ express框架的使用 htt ...

  3. CSS3中-webkit-overflow-scrolling: touch 的使用方法详解

    -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效果. auto 使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止. touch 使用具有回弹效果的滚 ...

  4. Swagger-API测试工具实战

    初次通过swagger不知道这是一个什么东东. 一.拿到一个项目需要测试,打开地址一看有个大写的swagger,于是各种脑补: 我所理解的就是,swagger是一个API开发工具或者来说是一个框架,开 ...

  5. appium + maven +jenkins 基本入门之二 新建maven 的java项目

    1: 下载maven : 1.0 :设置maven的环境变量: 1.1: 设置maven本地仓库: 在下载好的maven文件夹找到 apache-maven-3.3.9/conf 文件夹下的setti ...

  6. WEB文件上传漏洞介绍解决办法

    引用:http://blog.csdn.net/kobejayandy/article/details/35861499 问题: -1. 上传文件WEB脚本语言,服务器的WEB容器解释并执行了用户上传 ...

  7. Geometry shader总结

    什么是Geometry Shader GS存在于vertext shader和固定功能vertex post-processing stage之间,它是可选的不是必要的.GS的输入是单个primiti ...

  8. python常用库

    本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...

  9. Build OpenCV text(OCR) module on windows

    Background. AOI software needs to use the OCR feature to recognize the texts on the chips. Because o ...

  10. Redis配置文件参数说明

    Redis配置文件参数说明   1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis ...