- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565738 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174944
- 相册
- 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组决赛题解第四题
0 J& I" J8 T8 C+ C6 I. R
+ Q' h E8 b+ Q' h3 g: u2 l4 L% J" N9 S题意: 寻找有100个约数的最小数
# n) G0 u" z" f* U* e: d$ c) Q思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)9 o# e" v. R5 ~. n
& X( C! R- ]2 ?, n
结果:453606 i1 x) K2 i1 ]* R# W# t9 B
8 m; V7 X8 [. G; q- F% H
代码:
( H c A& ?0 i+ |8 A3 B
7 Q0 l0 A) {9 K% m8 t4 {1 S#include<bits/stdc++.h>0 |' S/ v4 e: ^, [4 t
#define mem(a,b) memset(a,b,sizeof(a))
7 u% W- ~( u+ T% N+ E! q) R' yusing namespace std;
3 M2 x; M+ A) u( Ktypedef long long ll;
( |6 [" U( ?4 H, P4 o- d5 Q+ i2 h: Aconst int inf = 0x3f3f3f3f;! b; f0 t& m, n
const int maxn = 3e5+55555;
& m' K- g& i3 Q, l# Rconst ll mod = 998244353;2 e/ o* e8 W5 O4 B$ ~, j$ y" }
const double eps = 1e-7;
: T: f' C, A0 \: K9 |5 `3 h
1 t" F) S K! m5 p$ n* `. e7 L: {bool vis[123456];
: u8 v+ t. A# `. Svector<int>prime;" s3 v0 P4 }4 h J# i
* E. e0 H" {/ x& A
void init() { //素数筛
+ Q; P& ]4 i' U6 O0 h# H for(int i = 2;i<= 30000;i++) {. T% ?) N3 V6 F9 X7 Z5 m
if(!vis) {
$ ^" G. W" o, g B for(int j = i*i;j<= 30000;j+= i) {
0 H9 E' H! i& H' o' l6 I' H3 W vis[j] = true;
" y/ K4 d9 B) C/ r( S- H2 S; ~5 { }! O3 C. V0 B% Y
}
2 R2 r3 M9 h; h }3 ?. W( v; d9 W4 ]$ u, M6 s
for(int i = 2;i<= 2019;i++) {
3 T9 H2 ?' Z& x- n- P if(!vis) prime.push_back(i);! Y# d( d$ Y1 d- O' X; k# {: ?
}
' R- G& {: H G0 ~4 Z return ;
! z9 i" j7 ]1 j# q; B/ N' \}6 K+ U3 z3 S* b9 `2 U
7 x a3 e- t: Q) b- j. ?int cal(int x) {
8 j+ X0 p) \* [1 J+ ?+ x& Y int num[123];
% Y0 u2 c3 J* ~ mem(num,0);' {9 T+ |& J7 Z' M1 |( `
3 Z7 Y( N) B/ d int k = prime.size(),cnt = 0;
! J: b8 J- q7 c# h' |( } for(int i = 0;i< k;i++) { // 分解素因子
8 V/ @5 r2 \4 j if(x%prime == 0) {8 U1 t. L0 t" H% c4 M' F
cnt++;5 q( m) W4 h O; a. D# D( f5 ]; q+ F
while(x%prime == 0) {* i1 h5 v9 n5 h
x/= prime;
' @' Z% \- s0 X" o+ Y0 A num[cnt]++;
) O& ]) x8 a& H5 E# G- p& \ }
; i' s2 k0 ]. h: B" e }+ M3 y7 o$ h, P: u* r" I, u& O8 h
}/ ]7 k6 Y+ E2 Y5 J' g
int ans = 1;
: x' `) p& n( j- h+ l" t for(int i = 1;i<= cnt;i++) { //计算因子总数
( M3 `& Z/ l" ] ans*= (num+1);
& i/ v- d |# A6 j; [# A }
/ ?% y9 S, n4 z0 Y { return ans;
# B$ K3 w% X4 p" ~}
: M. d0 l' ~5 e. {! \* K, v
2 |' t# x" c7 g L# yint main() {
% u# m4 s0 Z. x: | init();
. s" V) Z2 I& L8 T for(int i = 99;i<= 1000000;i++) {
1 t1 n- V6 _* H% ^* M if(cal(i) == 100) {; ~ O: y, h( u2 O) j# h$ G9 O
cout<<i<<endl;0 W1 D* r4 L4 \1 }8 C' p! B" c* Z
break;# u( M* \8 h$ P$ L3 |! I
}7 S* \8 H) [6 K3 X1 O( a X) c/ v
}2 f7 ~1 n8 Z+ T7 D' s. d; [. m# D+ Y
7 l2 r8 d' f. L7 M0 F return 0;+ g* [" }/ c/ P) d
}, {& d [% S6 _) J0 o
---------------------
9 v1 p# Q: G8 W8 t' b作者:nka_kun
9 G7 a# B9 }, ]) U# G% w来源:CSDN
8 e7 ^4 D& |7 a6 D, u. b8 C
" P; X3 K! B1 `. ^+ K4 F8 o" i. v: s4 i2 t
; b" p: y K4 Y! B9 q8 _ |
zan
|