随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

已知M 为T1,T2,T3 的LCM

输出满足 Ti-Tj<=25 的所有可能情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int N= 1E6+3;
#define int long long
 
 int pm[N],tot;
 int b[N],fac[N],F[N],len,cnt[N];
 int n,T;
  
 void init(int top){
    tot=0;
    b[1]=1;
    for(int i=2;i<=top;i++){
        if(b[i]) continue;
        pm[++tot]= i;
        for(int j=2;j*i<=top;j++) b[j*i]=1;
    }
 }
 void divide(int x){
    len=0;
    memset(cnt,0,sizeof cnt);
    for(int i=1;i<=tot;i++){
        if(x%pm[i]==0){
            fac[++len]=pm[i] ;
            while(x%pm[i]==0) cnt[len]++, x/=pm[i];
        }
    }
    if(x>1){
         fac[++len]=x; cnt[len]=1;
    }
 }
  
 int gcd(int x,int y){
    return y==0?x:gcd(y,x%y);
 }
 int lcm(int x,int y){
    return x/gcd(x,y)*y;
 }
 void dfs (int d, int u) {
    if (u > 1000000LL)
        return;
  
    if (d>len) {
        F[++T] = u;
        return;
    }
  
    for (int i = 0; i <= cnt[d]; i++) {
        dfs(d+1, u);
        u *= fac[d];
    }
 }
 signed main () {
    int cas =0;
    init(1e6) ;
    while (scanf("%lld",&n)==1&&n) {
        int ok=0; T=0;
  
        printf("Scenario %d:\n", ++cas);
  
        divide(n);
        dfs(1,1);
        sort(F+1,F+1+T);
  
        for (int i=1;i<=T;i++) {
            for (int j=i+1; j<=T; j++) {
                if (F[j]-F[i]>25) break;
                int d =lcm(F[i],F[j]);
  
                for (int k=j+1;k<=T;k++) {
                    if (F[k]-F[i]>25) break;
  
                    if (lcm(d,F[k]) == n) {
                        printf("%d %d %d\n",
                        F[i],F[j],F[k]);
                        ok=1;
                    }
                }
            }
        }
        if(ok == 0)
            printf("Such bells don't exist\n");
        printf("\n");
    }
}

 


 

posted on   towboat  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示