Find the maximum/hdoj 4002 2011 Regional Dalian Online euler fuction
2011-09-04 22:53
477 查看
这题是用来求1到n间i/euler(i)最大值。可得x/(x(1-1/p1)(1-1/p2)(1-1/p3).....(1-1/pn)) (pi为x的质因数),则有p1*p2*p3....*pn/(1-p1)(1-p2)(1-p3)....(1-pn), p1/(1-p1)是单调递减的。可得n前的全部质数的积,求刚好比n小于等于的最大的积即可。从最小的质数开始乘,直到时刚好不大于n的数即为结果。
打表即可!
打表即可!
import java.io.*; import java.util.*; import java.math.*; import java.math.BigInteger; public class hdoj4002 { public static void main(String[] args) { //////////////////////// final int MAXN=300; int[] prime=new int[MAXN+10]; int[] allprime=new int[MAXN]; int i; int j; int sub=0; prime[0]=1; prime[1]=1; for(i=2;i<=MAXN;i++) { if(prime[i]==0) { allprime[sub++]=i; for(j=i+i;j<=MAXN;j+=i) { prime[j]=1; } } } /////////////////////////////////store all the prime into the array allprime. BigInteger[] ans=new BigInteger[60]; BigInteger flag=new BigInteger("2"); ans[0]=BigInteger.valueOf(allprime[0]); for(i=1;i<60;i++) { ans[i]=ans[i-1].multiply(BigInteger.valueOf(allprime[i])); }//store the prime product in a table Scanner cin=new Scanner(System.in); int n; BigInteger num; n=cin.nextInt(); while(n>0) { n--; num=cin.nextBigInteger(); for(i=0;i<60;i++) { if(num.compareTo(ans[i])==0) { System.out.println(ans[i]); break; } if(num.compareTo(ans[i])<0) { System.out.println(ans[i-1]); break; } } } } }
相关文章推荐
- hdoj Find the maximum 4002 (欧拉函数&&大数打表)
- hdu 4002 Find the maximum 2011 大连网络赛 1002 Find the maximum
- HDOJ-4002/(大连网赛1002)- Find the maximum 数论
- HDOJ-4002/(大连网赛1002)- Find the maximum 数论
- HDOJ 4002 Find the maximum(数论+打表)
- hdu 4002 Find the maximum
- HDU 4002 Find the maximum(C++大整数实现+打表)
- hdu 4002 - Find the maximum
- HDU 4002 Find the maximum (欧拉函数-积性函数的性质(2011年大连赛区网络赛第二题)
- 2011年大连ACM网络赛 hdu 4002 Find the maximum
- HDU 4002 Find the maximum(欧拉函数)
- HDU - 4002 Find the maximum (Java大数打表)
- HDU 4002 Find the maximum(欧拉函数)
- hdu 4002 Find the maximum——数论
- hdu 4002 - Find the maximum
- hdu 4002 数论 打表找规律 Find the maximum
- 一道恶心题的流氓解法(HUD 4002 Find the maximum)
- hdu 4002 Find the maximum
- HDU 4002 Find the maximum(数论-欧拉函数)
- HDU 4002 Find the maximum(数论-欧拉函数)