程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU1299&&SPOJ - KPEQU(找因子來找解的個數)

HDU1299&&SPOJ - KPEQU(找因子來找解的個數)

編輯:C++入門知識

HDU1299&&SPOJ - KPEQU(找因子來找解的個數)


 

題意:

求方程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;i1) 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

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved