SPOJ Equation :求 1/n!=1/x+1/y 的解的个数
来源:互联网 发布:数据字典 javaweb 编辑:程序博客网 时间:2024/05/21 09:51
题目地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=29547#problem/M
解析:
题目就是求1/n! = 1/x + 1/y 的解的个数,看样例知要考虑(x,y)对数的关系。
设 m=n! ,由等式知x,y必定大于n!,所以再设 x=n!+k=m+k 带入 1/m=1/x+1/y 中化简得到y=m*m/k+m,因y为整数,所以要求k整除m*m,即k为m*m的因子,问题便转化为求n!*n!的因子个数, 设n!=p1^e1 * p2^e2 * p3^e3 *...*pk^ek,则 n!*n!= p1^(2*e1) * p2^(2*e2) *...*pk^(2*ek) 。 则因子个数sum=(2*e1+1)*(2*e2+1)*...*(2*ek+1); 答案很大,需要高精度。用java处理方便!
import java.util.*;import java.math.*;public class Main {static int N = 10050;static int q = 0;static int prime[] = new int[N];public static void sieve_prime( ){int i;int flag[] = new int [N];for (i = 2; i * i < N; i++) {if (flag[i] == 0)prime[q++] = i;for (int j = i * i; j < N; j += i) {flag[j] = 1;}}for (; i < N; i++)if (flag[i] == 0)prime[q++] = i;}public static void solve(int n) {BigInteger ans = BigInteger.valueOf(1);int temp,count;for (int i = 0; prime[i]<= n && i < q && n > 1; i++) {count = 0;temp= prime[i];while (temp <=n) { count+=n/temp;temp*=prime[i];}ans = ans.multiply(BigInteger.valueOf(count * 2 + 1));}System.out.println(ans);}public static void main(String[] args) {Scanner in = new Scanner(System.in);sieve_prime();int x;while (in.hasNext()) {x = in.nextInt();if (x == 0) break;solve(x);}in.close();} }
- SPOJ Equation :求 1/n!=1/x+1/y 的解的个数
- SPOJ Equation :求 1/n!=1/x+1/y 的解的个数
- 求1/X+1/Y= 1/N的所有正整数解
- 求区间x∈[1,n],y∈[1,m],gcd(x,y)=1的数量 [容斥]
- 【欧拉函数 && 求gcd(n, x) = y,x的个数】UVA
- bzoj 4152 the camptin (dis[x][y]=min(|x.x-y.x|,|x.y-y.y|),求1,n最短路)
- 求28 * x + 15 * y = 95108的所有x与y的整数值个数
- 求指定分段函数y=x-1(x>1);y=-x+1(x<=1)的输出
- (x&y) + ( (x^y)>>1 )求平均值
- 求特征数列(第n个数是第n-1个数和第n-2个数的和)的第X个数是多少
- 求 1~n 之间素数的个数
- 求两个整型数的平均值:return (x&y) + ((x^y)>>1)
- 1/X+1/Y=1/N!的两种O(n)做法
- 求(1~n)个数中1的个数
- SPOJ - VLATTICE Visible Lattice Points(gcd(x,y,z)=1的对数/莫比乌斯反演)
- 省赛i题/求1~n内所有数对(x,y),满足最大公约数是质数的对数
- 求n个数(1~n)的质因子
- hdu4282 x^z+y^z+x*y*z=k 解的个数
- 老码农教你学英语
- 产品经理必读的10篇文章
- Win7下要求以管理员权限运行程序
- ZOJ 3494 BCD Code (AC自动机+数位DP,5级)
- poj 3321
- SPOJ Equation :求 1/n!=1/x+1/y 的解的个数
- CPU时间片
- codility上的问题 (22)Phi 2012
- 转载:PostgreSQL分区表(Table Partitioning)应用
- 青春代码,微电
- Qt安装—搭建VS2008+QT开发环境
- Help a PhD candidate out!解题报告
- 代码调试方法,注意事项(一个菜鸟的感受)
- Codeforces Beta Round #74 (Div. 2) / 90B African Crossword (模拟)