bzoj4459[Jsoi2013]丢番图

bzoj4459[Jsoi2013]丢番图

题意:

丢番图方程:1/x+1/y=1/n(x,y,n∈N+) ,给定n,求出关于n的丢番图方程有多少组解。n≤10^14。

题解:

通分得yn+xn=xy,即xy-xn-yn+n^2=n^2,即(x-n)(y-n)=n^2,故x-n是n^2的因数,所有答案为n^2的因数个数/2,向上取整。一个数的因数个数为该数每种质因数的个数+1的乘积。所以先将n分解质因数,然后ans乘上个数*2+1(因为要求n^2的因数个数)。如果最后n>1,说明有一个质因数大于sqrt(n),则ans还要乘3。最后输出(ans+1)/2即可。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define ll long long
 5 using namespace std;
 6
 7 long long n,ans;
 8 int main(){
 9     scanf("%lld",&n); ans=1;
10     for(int i=2;(ll)i*i<=n;i++)if(n%i==0){
11         int j=0; while(n%i==0)n/=i,j++; ans*=(j<<1|1); if(n==1)break;
12     }
13     if(n>1)ans*=3;
14     printf("%lld",(ans+1)>>1); return 0;
15 }

20160817

时间: 2024-11-08 21:07:55

bzoj4459[Jsoi2013]丢番图的相关文章

【bzoj4459】JSOI2013丢番图

某JSOI夏令营出题人啊,naive! 你还是得学习个,搬这种原题不得被我一眼看穿? 求个n^2的约数除以二,向上取整. #include<bits/stdc++.h> using namespace std; typedef long long ll; ll n=0,ans=1;int cur=0; int main(){ cin>>n; for(int i=2;1LL*i*i<=n;i++){ if(n%i==0){ cur=0; while(n%i==0)cur++,n

Project Euler 108:Diophantine reciprocals I 丢番图倒数I

Diophantine reciprocals I In the following equation x, y, and n are positive integers. For n = 4 there are exactly three distinct solutions: What is the least value of n for which the number of distinct solutions exceeds one-thousand? NOTE: This prob

Project Euler 110:Diophantine reciprocals II 丢番图倒数II

Diophantine reciprocals II In the following equation x, y, and n are positive integers. For n = 4 there are exactly three distinct solutions: It can be verified that when n = 1260 there are 113 distinct solutions and this is the least value of n for

Mathematica

Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎.图形系统.编程语言.文本系统.和与其他应用程序的高级连接.很多功能在相应领域内处于世界领先地位,它也是使用最广泛的数学软件之一.Mathematica的发布标志着现代科技计算的开始.Mathematica是世界上通用计算系统中最强大的系统.自从1988发布以来,它已经对如何在科技和其它领域运用计算机产生了深刻的影响. Mathematica和MATLAB.Maple并称为三大数学软件. 软件名称 Mathematica 开

《这才是最好的数学书》——因需要而发现

关于这个专栏,主要是介绍日本一位很出名的数学家的科普读物,其中主要涉及数学古.近代史和一些学好数学的方法,另外还涉及了一些简单有趣的小题目.像这本书的封面所说——“读懂数学的.来龙去脉,就能参透数学的根源本质,从0到1,让你恍然大悟,一切数学都是因为人的需要而产生”,这无疑会极大地拉近数学和我们的距离,让我们能够激发出更大的兴趣去研读数学,这也许是这本书能够带给我们最有价值的东西. 对于第一章——数学,因需要而发现,作者概括地描述了古代数学史的源头和发展,溯源能到什么程度呢,楔形文字表示数字……

数学百家

刘徽. 祖冲之及基子孙 僧一行张遂 秦九韶 杨辉 李治 朱世杰 华罗庚 泰勒斯 毕达哥拉斯 欧几里得 阿基米德 丢番图 花拉子米 斐波那契 卡丹.. 韦达 纳皮尔 笛卡儿 卡瓦列利 费马 帕斯卡 牛顿 莱布尼兹 欧拉 拉格朗日 高斯 柯西 罗巴切夫斯基 外尔斯特拉斯 康托尔 科瓦列夫斯卡娅 庞加莱 希尔伯特 拉马努金 柯尔莫哥洛夫 冯·诺依曼 http://product.china-pub.com/602597#ml

POJ1061 青蛙的约会 __一维世界的爱情

由于今天上午在做数论知识的笔记,发现那时候赵老师讲的线性丢番图(求ax+by=c的特解)部分完全搞不懂,后来网上查了一下才发现这个公式就是求同余方程,所用方法就是扩展欧几里得算法.正好红皮书上有这么一个模板,直接敲了下来然后稍作修改.后来发现POJ上的1061题就是这样一个类型,用了三个小时,荒废无数精力才AC.毕竟无聊,写个题解记录一下. 题目描述: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是

费马小定理是数论的基础理论之一

费马小定理 关于费马小定理,读到注解的时候,还是有点震撼的. 皮埃尔•得•费马(1601-1665)是现代数论的奠基人,他得出了许多有关数论的重要理论结果,但他通常只是通告这些结果,而没有提供证明.费马小定理是在1640年他所写的一封信里提到的,公开发表的第一个证明由欧拉在1736年给出(更早一些,同样的证明也出现在莱布尼茨的未发表的手稿中)费马的最著名结果——称为费马的最后定理——是l637年草草写在他所读的书籍<算术>里(3世纪希腊数学家丢番图所著),还带有一句注释“我已经发现了一个极其美

什么是“代数”?

什么是代数 代数是什么?此题之大非不才能答.但以"代数"之名话之,以期窥见一斑. {{uploading-image-355191.png(uploading...)}} 目录 1. 从"al-jabr"到"algebra" 2. 从"algebra"到"代数" 3. 代的不光是"数" 4. 从数与数之异到"数"与"数"之同 5. 从历史的代数到发