首页 > 代码库 > [NYOJ 517]最小公倍数
[NYOJ 517]最小公倍数
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=517
思路:求1~n的最小公倍数,就求小于等于n的x^i之积(x为质数,且i尽量大,x^i<=n)
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> #define MAXN 1000 #define MAXM 1000 using namespace std; int primes[MAXN],tot=0; bool isPrime[MAXM]; int ans[MAXN]; //高精 void GetPrime() { memset(isPrime,true,sizeof(isPrime)); for(int i=2;i<MAXM;i++) { if(isPrime[i]) { primes[++tot]=i; for(int j=i*2;j<MAXM;j+=i) isPrime[j]=false; } } } int main() { GetPrime(); int n; while(scanf("%d",&n)!=EOF) { int len=1; memset(ans,0,sizeof(ans)); ans[1]=1; for(int i=1;primes[i]<=n;i++) { int x=primes[i]; while(x<=n) x*=primes[i]; x/=primes[i]; for(int i=1;i<=len;i++) ans[i]*=x; for(int i=1;i<=len;i++) { ans[i+1]+=ans[i]/10; ans[i]%=10; } while(ans[len+1]>0) { len++; ans[len+1]+=ans[len]/10; ans[len]%=10; } } for(int i=len;i>=1;i--) printf("%d",ans[i]); printf("\n"); } return 0; }
[NYOJ 517]最小公倍数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。