怎样做分销网站,福建手机版建站系统开发,东莞工厂网站建设,乐华网络公司介绍1 /*2 本题属于圆周追击问题#xff1a;3 假设已知两个圆周运动的物体的周期分别是a ,b, 设每隔时间t就会在同一条直线上 4 在同一条直线上的条件是 角度之差为 PI !5 那么就有方程 #xff08;2PI/a - 2PI/b#xff09;* tPI 所以就有 tab/(2|a-b|);6 … 1 /*2 本题属于圆周追击问题3 假设已知两个圆周运动的物体的周期分别是a ,b, 设每隔时间t就会在同一条直线上 4 在同一条直线上的条件是 角度之差为 PI !5 那么就有方程 2PI/a - 2PI/b* tPI 所以就有 tab/(2|a-b|);6 如果有多个物体 就会有多个t值所以每隔 所有 t值的最小公倍数的时间所有的物体就会在同一直线上7 8 另外如果分数的分子分别是 a1, a2, ...., 和 b1, b2, ....9 那么所有分数的最小公倍数就是lcm(a1, a2, ...)/gcd(b1, b2,....);10 11 再有如何求多个数的最小公倍数呢12 根据数论每一个数都可以表示成素数的乘积的形式 13 令p[i]存储素数将a1,a2,...分别整除以p[i]直到除尽并记录除以每个p[i]时的个数temp;14 并更新该个数的最大值cnt[i]max(temp, cnt[i]); 15 16 最后cnt[i]个p[i]分别相乘得到最终的结果就是所有数的最小公倍数 17 */18 #includeiostream19 #includecstring20 #includecmath21 #includecstdio22 #define M 1000523 #define N 100524 using namespace std;25 typedef long long LL;26 LL p[M];27 bool isP[M];28 LL cnt[M];29 LL q[N];30 LL ans[N], endx;31 LL top;32 33 void bigN(){//大数据的处理34 LL c0;35 endx0;36 ans[0]1;37 for(LL i0; itop; i)38 for(LL j0; jcnt[i]; j){39 for(LL k0; kendx; k){40 ans[k]ans[k]*p[i] c;41 cans[k]/10000;42 ans[k]%10000;43 }44 if(c0){45 ans[endx]c;46 c0;47 }48 }49 }50 51 void isPrime(){52 LL i, j;53 isP[1]1;54 for(i2; iM; i){55 if(!isP[i]) p[top]i;56 for(j0; jtop i*p[j]M; j){57 isP[i*p[j]]1;58 if(i%p[j]0) break;59 }60 }61 }62 63 void solve(LL k){64 for(LL i0; itop p[i]k; i){65 LL tmp0;66 while(k%p[i]0){67 tmp;68 k/p[i];69 }70 71 if(tmpcnt[i])72 cnt[i]tmp;73 }74 }75 76 LL gcd(LL a, LL b){77 while(b){78 LL ra%b;79 ab;80 br;81 }82 return a;83 }84 85 int main(){86 LL n;87 isPrime();88 while(scanf(%lld, n)!EOF){89 memset(cnt, 0, sizeof(cnt));90 scanf(%lld, q[0]); 91 for(LL i1; in; i){92 scanf(%lld, q[i]);93 LL tmpq[0]-q[i]0 ? q[0]-q[i] : q[i]-q[0];94 if(tmp!0){95 LL GCDgcd(tmp, q[0]*q[i]);96 solve(q[0]*q[i]/GCD);97 q[i]tmp/GCD;98 }99 else q[i]0;
100 }
101
102 LL ans20;
103 for(LL i1; in; i)
104 ans2gcd(ans2, q[i]);
105 if(cnt[0]0)//除以2
106 --cnt[0];
107 else ans2*2;
108
109 bigN();
110 if(ans20){
111 endx0;
112 ans[endx]0;
113 }
114 printf(%lld, ans[endx]);
115 for(int iendx-1; i0; --i)
116 printf(%04lld, ans[i]);
117 printf( %lld\n, ans2);
118 }
119 return 0;
120 } 1 //用java爽一下处理大数2 import java.util.Scanner;3 import java.util.Arrays;4 import java.math.*;5 import java.io.BufferedInputStream;6 class Main{7 static int[] tt new int[1005];8 static int n;9 static int top0;
10 static boolean[] flag new boolean[10005];
11 static int[] p new int[10005];
12 static int[] q new int[10005];
13 static int[] aa new int[10005];
14 public static void isprime(){
15 int i, j;
16 Arrays.fill(flag, false);
17 for(i2; i10000; i){
18 if(!flag[i]) p[top]i;
19 for(j0; jtop i*p[j]10000; j){
20 flag[i*p[j]]true;
21 if(i%p[j]0) break;
22 }
23 }
24 --top;
25 flag[1]true;
26 }
27 public static void solve(int k){
28 int i, cnt;
29 for(i0; itop p[i]k; i){
30 cnt0;
31 while(k%p[i]0){
32 cnt;
33 kk/p[i];
34 }
35 if(cntaa[i])
36 aa[i]cnt;
37 }
38 }
39
40 public static int gcd(int a, int b){
41 while(b!0){
42 int ra%b;
43 ab;
44 br;
45 }
46 return a;
47 }
48
49
50 public static void main(String[] args){
51 isprime();
52 Scanner input new Scanner(new BufferedInputStream(System.in));
53 ninput.nextInt();
54 q[0]input.nextInt();
55 for(int i1; in; i){
56 q[i]input.nextInt();
57 int tempMath.abs(q[0]-q[i]);
58 if(temp!0){
59 int GCDgcd(temp, q[0]*q[i]);
60 solve(q[0]*q[i]/GCD);
61 q[i]temp/GCD;
62 }
63 else q[i]0;
64 }
65
66 BigInteger bigN BigInteger.ONE;
67 for(int i0; itop; i){
68 for(int j0; jaa[i]; j)
69 bigNbigN.multiply(BigInteger.valueOf(p[i]));
70 }
71 for(int i0; itop; i)
72 if(aa[i]!0)
73 System.out.println(p[i] aa[i]);
74 int ans0;
75 for(int i1; in; i){
76 ansgcd(ans, q[i]);
77 }
78 if(aa[0]0)
79 bigNbigN.divide(BigInteger.valueOf(2));
80 else ans*2;
81 if(ans0)
82 bigNBigInteger.ZERO;
83 System.out.println(bigN ans);
84 }
85 } 转载于:https://www.cnblogs.com/hujunzheng/p/3891180.html