- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564692 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174630
- 相册
- 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组决赛题解第四题 6 m& Z& [8 w) B! {+ N
( O8 ?( [( o8 ?+ Q( a, A( H( _题意: 寻找有100个约数的最小数
/ Z# d X5 X) n思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)# X$ j2 b5 I# Y0 X4 k: i4 f
) @+ `; L( f& {' j0 m0 p& f0 m
结果:453608 m2 A! P; `! n5 J; P3 E3 e
; d9 r: ?5 i5 {
代码:, C! a' u6 s1 R9 I$ Q
& c) U2 W$ Z8 @% b" |) ]+ J/ |#include<bits/stdc++.h>
, a; D. h n9 I! g& D#define mem(a,b) memset(a,b,sizeof(a))& N# N# N) }9 W# U2 I/ h B
using namespace std;
, O6 d) R; m6 B' _4 n6 qtypedef long long ll;- b# W3 D4 M+ _* U; j, U# Q3 k
const int inf = 0x3f3f3f3f;
3 l, ]8 @5 ^% u) Qconst int maxn = 3e5+55555;, H F' C3 R8 ]9 e! Y# Q
const ll mod = 998244353;1 V1 V) p8 V) e$ c2 X
const double eps = 1e-7;; o# ]1 l8 X) r8 S/ a5 ^" j
/ f" D* M) E4 L6 S* L p2 r+ @bool vis[123456];0 ?7 @$ l/ q. g% J
vector<int>prime;
, v' w/ P5 \0 Y4 F$ i6 \' G
% [9 G# t- p6 C+ M; Ovoid init() { //素数筛
: |9 }; j C" W( ?/ s ` for(int i = 2;i<= 30000;i++) {
1 W$ N6 w& ?+ D if(!vis) {
7 n! `+ ?4 Z. c$ s for(int j = i*i;j<= 30000;j+= i) {# O+ Q' J. E3 R& j6 ?$ b7 n/ h
vis[j] = true;2 R" L' \! N# r% h9 U
}1 N( z( w! |6 F! F- V
} t2 D9 ?/ W. m3 B! C& d: u
}7 r( E) v$ _5 Y' j. g
for(int i = 2;i<= 2019;i++) {3 ^6 v) I% `, b, p% o+ y( h! |
if(!vis) prime.push_back(i);# D! F* X. y+ X" j
}1 q! C7 I4 v0 g
return ;/ Q' i" ^6 z' I- q; D; I
}
; P2 [* h+ E) |7 \- O7 r
1 P2 }7 M! {$ n+ v. K' X# ^int cal(int x) { % ~0 @1 ^) a& ]0 [! x( M c2 l; f
int num[123];
l9 |7 k3 N, A! F, z' Y+ ^ mem(num,0);# N$ ^" t6 g1 r/ `1 y
& @, [4 d/ O+ y4 A" r! E1 |! u int k = prime.size(),cnt = 0;7 n1 k2 I8 x( M' w* u
for(int i = 0;i< k;i++) { // 分解素因子
# _$ g/ `8 d3 E; {" t if(x%prime == 0) {1 V" l$ a D7 U/ p2 d/ s# R
cnt++;
0 F& c- Q; N- ]0 h while(x%prime == 0) {% V* B- B: }2 d2 S
x/= prime;
% H- m; `% I' C y num[cnt]++;
- r- Y: f) ~! d0 l$ K1 n1 O% v }
' \8 n: `/ \& u/ d! S; `) e }" o `, J( k) ^( f
}8 B; @( Y; f$ p4 x% m
int ans = 1;
1 L* {* ^" F0 G: C for(int i = 1;i<= cnt;i++) { //计算因子总数& {6 V3 e3 | Z1 \- i
ans*= (num+1);$ p- T9 A, ], n' m/ k% Y# B
}
3 r1 Y. P. W1 G5 b3 ] return ans;5 r1 ]0 Q7 |/ p4 i( q3 O! r
}* i$ R# D3 }9 t7 o7 J* R* R f
/ x3 _: c2 _# E7 d# U( A' d
int main() {* ^* T( L7 p; e9 m) \1 @
init();! v# z) A0 E8 E$ z( y1 J
for(int i = 99;i<= 1000000;i++) {+ l4 r6 B7 x0 P4 f9 o7 w- C, ]& T5 {
if(cal(i) == 100) {+ B$ j2 m4 q3 B( k& D6 i; ^) `
cout<<i<<endl;0 Y( N1 M$ S. v; k/ Z5 B
break;
; h% l: ^( |; X; S& i }. }6 ]; w" C, U
}" L C) S3 [; R' O* [1 a
( ~' W$ L! a' E5 [
return 0;
; `( R% v' K: j4 U( d" B( x3 O}
8 j( P& T: m5 I# u9 v---------------------
# o. x3 g2 T% z9 H/ y作者:nka_kun 2 j6 D% F9 Z0 r: R2 m
来源:CSDN ; T3 q2 A8 Q; U8 h
- b; Y2 O7 v" U
) x0 ^2 m/ X+ M0 [
% q" R1 N- }4 Q& N0 F- e7 Q3 a |
zan
|