HDU1299&&SPOJ - KPEQU(找因子来找解的个数)

2015-11-21 00:59:05 · 作者: · 浏览: 6

?

题意:

求方程1/x+1/y=1/n的解的个数 1/3+1/2 与1/2+1/3看作是一组解。

分析:

1/x+1/y = 1/n 设y = n + k;

==>1/x + 1/(n+k)=1/n;

==>x = n^2/k + n;

因为x为整数,k就是n^2的约数。

代码如下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       using namespace std; const int maxn = 1e7+10; typedef long long LL; int p[maxn/10],cnt; bool vis[maxn]; int fac[1000],tot; void init(){ cnt=0; memset(vis,0,sizeof(vis)); for(int i=2;i
      
       1) fac[tot++]=1; LL ans = 1; for(int i=0;i
       
        

题目链接:SPOJ - KPEQU 传送门

题意:

同上题差不多不过n换成了n!,因此需要用到高精度以及n!的素因子分解

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
	static int cnt ;
	static int[] pri =new int[10010];
	static boolean[] vis = new boolean[10010];
	public static void init(){
		cnt=0;
		for(int i=0;i<10010;i++) vis[i] = false;
		for(int i=2;i<10010;i++){
			if(!vis[i]){
				pri[cnt++]=i;
				for(int j=i+i;j<10010;j+=i) vis[j]=true;
			}
		}
	}
	public static int calc(int n,int p){
		if(n
         
          

?

?