已知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" ); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!