- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564709 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174636
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
|
2019第十届蓝桥杯B组决赛题解第四题 3 G# ~6 y3 k6 B8 V$ Y
; q* }2 H/ g* T题意: 寻找有100个约数的最小数" H' _9 R4 S7 o! f! Y
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)
/ b$ ]4 B) m0 b7 _; |- o6 \/ P3 O$ K1 s
结果:45360; E9 }$ W! Y0 Q% v1 _; e9 U$ q
0 I3 g( n" L/ W( X4 f6 b代码:" I; y/ w: E/ a5 L8 L6 x# m5 |
5 g* l7 i. O+ J+ N' Q; b( h; s" _
#include<bits/stdc++.h>
( O k/ J/ V& o8 h$ P8 O#define mem(a,b) memset(a,b,sizeof(a))
+ c% a# ^5 K1 j9 ~8 V" rusing namespace std;
% `# C: d& Y: f$ Etypedef long long ll;. }. k0 \! C, B2 q- {
const int inf = 0x3f3f3f3f;
1 n0 ^( v! s2 e3 z$ s9 F& gconst int maxn = 3e5+55555;; U5 _5 g7 b5 y
const ll mod = 998244353;
( |& [' W, S; _: c6 pconst double eps = 1e-7;& g9 l6 f% L' Z: r S1 y) u
' b1 A2 [* D, K8 cbool vis[123456];( M3 q, |5 S% Q. b
vector<int>prime;3 j5 G& c; N3 W2 ~' `3 |, K
) Y$ }; j, F! e* y( o; ^
void init() { //素数筛! [/ t' y! f$ K4 a' u# P
for(int i = 2;i<= 30000;i++) {8 ~8 n. o+ W7 c4 H
if(!vis) {
+ j+ h$ l/ a$ H. c( F$ c for(int j = i*i;j<= 30000;j+= i) {
( A' B9 P# P/ Q4 ], I: x* O vis[j] = true;
5 x8 ?8 ^. z6 `' b) `' u }' o+ X6 V1 K; _/ u
}
# J! W6 U% F5 F4 F }
5 A6 |4 Q S1 I; H `- r for(int i = 2;i<= 2019;i++) {3 F* U1 ]# I% k; Q
if(!vis) prime.push_back(i);
: Q: E8 ?6 s" ~/ N( e }
. J& S- T* ]8 I, p, [ return ;. Q! k2 ? V8 S. x- [& N
}
$ q, f/ h* a0 U
# a+ W- S6 \ e$ A ], Uint cal(int x) { % d9 u& t6 W# M' i1 r% O( O( j
int num[123];
) b" d9 Z) h# B4 Q2 ^% ?/ ]9 V( O mem(num,0);
* u7 d$ M8 M/ }; K. z# R9 @9 ?( s" g/ f1 i1 q4 ]$ O
int k = prime.size(),cnt = 0;5 S2 @" L6 r+ H: }1 R
for(int i = 0;i< k;i++) { // 分解素因子
( N k" |: O' [- C4 ^ if(x%prime == 0) {) _7 h9 j) k" N
cnt++;5 ?1 E1 J4 b& R9 e# {
while(x%prime == 0) {
( A+ i7 T) a% c) O- a, y x/= prime;
+ ^! m. \+ \; q' d) C* N num[cnt]++;* i5 Y: \" I" \. Z, [" `
}: |5 j1 r+ @; l4 H
}1 ]1 q' e. F2 }6 I6 J `. n
}8 q2 J+ {& M! _8 H. s1 _
int ans = 1;. o6 C: a) a" S( ?2 t7 Z
for(int i = 1;i<= cnt;i++) { //计算因子总数 ^) f2 X; B) M8 w+ I' W) `
ans*= (num+1);
$ E9 k0 A2 O5 m5 W# D }7 A; N- c3 k7 d. b; {
return ans;
8 O( X& Z- s) z4 x$ b2 ~}% o; P! N N* q& z
! K5 @! G/ K6 q% cint main() {' Y5 R* l B7 c3 G4 c/ f0 e! |* s# Q
init();
* P2 Q9 j/ h0 l& }1 U5 l for(int i = 99;i<= 1000000;i++) {8 ~4 [( g) g) s3 D$ m- w0 |
if(cal(i) == 100) {. c4 H8 r6 H6 u
cout<<i<<endl;% Q4 ^7 `2 d9 N& v2 Y$ N
break;) J4 d9 Y' c, C2 ^3 ?
}$ k! q/ b0 A9 m7 T7 ~7 u
}% x# ?( t! u0 Q: t) `
w6 [/ p* `; p- C5 T! X' f
return 0; i- m( \( r6 W8 ]/ T
}
* b+ T, s0 @1 Z6 R P& r: j--------------------- \) U `+ \% b/ }3 p5 E* E
作者:nka_kun % ]% Q/ ~7 ~( z
来源:CSDN ( B3 O- R8 a+ p* A* b
0 m# p/ x% {- E7 B' ~% a$ q5 o0 }3 T3 _
4 \( x F" s/ j |
zan
|