題意:
求方程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