- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563323 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174220
- 相册
- 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组决赛题解第四题 ) }) Z; W& @$ H( D1 [# g& A
3 ]& F: N. t7 A' S2 y
题意: 寻找有100个约数的最小数1 J" }7 d9 w1 O* x% ~0 b* g1 m. B
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)
1 P e2 R& a) e* [+ d. i: \2 n$ s* \, P6 M% \/ t
结果:45360
( K# d& w' @- o* s( C, i! h
! K7 U! A9 p3 p% D/ i5 F& R代码:7 ]8 F+ P- j$ g% m* G' |
' r' n9 t: e2 ^; ?, r) I) v' R
#include<bits/stdc++.h>+ W' o8 h/ H5 e) i D
#define mem(a,b) memset(a,b,sizeof(a))
* \+ |; M8 I4 B7 husing namespace std;
3 e5 m7 E8 B2 |, rtypedef long long ll;
3 c C: J% f4 z, Q1 X, s oconst int inf = 0x3f3f3f3f;, J9 s5 p& \" E- d1 T
const int maxn = 3e5+55555;
7 j& V/ \" W8 Dconst ll mod = 998244353;
* P! S: y4 Q9 m' z2 qconst double eps = 1e-7;
0 [9 A: G) f% W- S& B1 J. W0 ]6 L1 W: m' o0 `2 k9 C
bool vis[123456];
: W# u" h# J- c! ^& mvector<int>prime;" S! ]% e; a* p& e
J- N6 m2 [- c Y
void init() { //素数筛2 d, w7 `' k" {: p
for(int i = 2;i<= 30000;i++) {- b% ?6 [ ]% \4 k7 g9 c
if(!vis) {
% R$ S4 o8 G9 z for(int j = i*i;j<= 30000;j+= i) {
- c+ B/ m& M$ h$ Z; l4 A. v vis[j] = true;
; b: w4 [, ~$ d9 X1 g }
1 A& e4 z7 _$ h- h3 B: O9 L }: w g' N- f3 j" y! N" p. Z
}9 F: W. H; t. V" T, H$ x/ C/ Y
for(int i = 2;i<= 2019;i++) {* n/ n$ R4 [( [( [) ]
if(!vis) prime.push_back(i);
1 h+ x. M# s9 M5 o1 Y- D }
7 ^7 s0 q$ g. c/ m- j* H return ;
& g; n9 K' }4 x' j P. a/ h}
, O( @/ ^7 ]1 ]4 P% n) j, a9 x- Q/ ]
int cal(int x) { 9 `4 @: d4 c" ~2 H+ ~
int num[123];/ i1 b* m9 A/ l9 t6 N/ e# l+ b
mem(num,0);9 y. f1 n- ^0 r" n2 h
l& m: a# G- x; r
int k = prime.size(),cnt = 0;
% M( ^# V+ ]4 J6 Y* x0 c' A for(int i = 0;i< k;i++) { // 分解素因子
) c* C x! _ b4 Q% {( ~ if(x%prime == 0) {3 z0 u& m6 [! j8 z9 E5 U$ [
cnt++;- M ], x. o# w8 N9 N$ ^% T+ J
while(x%prime == 0) {" L, r2 b# _' K) b$ I
x/= prime;+ O) s- |6 E9 |
num[cnt]++; q5 O3 k" o6 K& n+ l
}5 q t- R9 R1 d" ~6 x
}3 J8 A5 P6 z& O
}5 y& @# D" D1 o$ c+ H
int ans = 1;
2 X% ]. d+ y5 z- e4 F2 o for(int i = 1;i<= cnt;i++) { //计算因子总数0 K7 S' F @2 u, J$ F' o: f9 N
ans*= (num+1);2 T4 x( [, g) R! Q- g
}; P: V4 B0 Z. P6 U" u V
return ans;
: C8 o ]3 ?$ _% y. _- d}# C- j& g7 d# i6 O1 E, ~0 t
, g3 ]$ Z* W$ r3 kint main() {4 N# B1 e; \$ U# ?# U
init();
; s z& g; K! U% Q) h for(int i = 99;i<= 1000000;i++) {
3 I+ L' }0 N' j if(cal(i) == 100) {
/ s6 ?+ R, Q4 O- i- E cout<<i<<endl;4 ]: b# V" I! s4 ~
break;
4 b4 D5 U7 Y8 x, q; h }& b! ]0 y g m7 z1 V
}
0 @- i, `2 y4 F
0 Z) q2 p! `. r return 0;5 N* s" u1 R7 Q v7 n5 T- ?
}
+ ~- C; C% S, H0 S7 v--------------------- & Y9 O; l4 ?# W' p) y$ d! q! b
作者:nka_kun
3 g M2 ~& ], s3 e来源:CSDN
! Z! l0 f" o" l" g' i7 X- {; Z6 \6 U
+ F& j0 J7 c$ F& Y" Z" ?! M9 R: `0 m+ f" a
|
zan
|