- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 569174 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175975
- 相册
- 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组决赛题解第四题 9 _4 g f) x& A3 O; D* `
% x$ H6 \4 r3 ^$ w题意: 寻找有100个约数的最小数; z8 U2 l& E9 |4 Q
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)8 K1 [7 q7 Z7 `, B2 u7 U; n
' f! z( N& k {# j" ^+ X+ B+ H" V$ j结果:453600 b- W4 f$ t/ w0 o K$ Z
2 P8 w5 [9 G' T; ^0 |
代码:9 U6 b3 X. f4 A1 p
$ _3 Q! }$ q0 @1 h+ E$ f o; b4 \% }
#include<bits/stdc++.h>
$ I& K& k p* }#define mem(a,b) memset(a,b,sizeof(a))1 ^9 O7 ?" T* P, M* E& X. E$ K
using namespace std;
( s% ^8 m9 |0 m) H; Atypedef long long ll;+ y/ R2 ^+ Y) m. c# c( J& {: g
const int inf = 0x3f3f3f3f;
4 R( _1 E! _$ L( qconst int maxn = 3e5+55555;
6 E) J2 M- ]6 Fconst ll mod = 998244353;
3 m0 B2 x% E: P- I& Wconst double eps = 1e-7;% f; h! W/ ?0 K5 L* n1 ^
! S6 l. d/ p7 U' r4 f' R
bool vis[123456];( R9 x8 |3 I- Z; m
vector<int>prime;
1 s' T2 ]" A* o2 b( t/ h$ F$ w: j; O# Q5 w- ~5 i
void init() { //素数筛# w2 _4 q( v+ n- O% X* p
for(int i = 2;i<= 30000;i++) {5 ?" S7 Z+ A! s! a2 \, |
if(!vis) {
8 W0 ~- x; O/ R Q' u for(int j = i*i;j<= 30000;j+= i) {
5 Q( e. a7 p2 h$ m! T vis[j] = true;9 d a; `" r9 `3 F* V4 P6 f% h8 d
}/ e# g( D, s7 P- |- m" h2 Y6 u v
}, o! Q& Y* K$ t2 F$ \: \ D$ r& h! j( K
}
* b: [' d- L \8 H- M T for(int i = 2;i<= 2019;i++) {, R5 j. ~: [3 m$ T
if(!vis) prime.push_back(i);
9 V1 ^' ^( Q) ^, }% q# I }
' S- @9 G& E4 u3 c2 x8 c return ;' [+ p. Q1 j6 @; t( e
}# _$ K2 w# V$ N% `
* N# I6 u& Q- U; B2 cint cal(int x) { 4 i; g/ K- L9 x+ e6 U: q
int num[123];
$ E9 v" S: a. F; j0 s8 o mem(num,0);: _$ e6 }0 P o: h0 v. u% w
/ C% O: M% u* L' u) Q9 ~9 u" _6 M
int k = prime.size(),cnt = 0;: C) ?0 s+ m$ T
for(int i = 0;i< k;i++) { // 分解素因子
: a; ~% S2 G7 u. q! Y if(x%prime == 0) {
/ P2 ?% y; r0 U3 b4 ~2 u! K cnt++;
3 K5 L- b0 M$ s: E$ k6 x3 D$ t+ R while(x%prime == 0) {& H4 J6 X$ X7 z. E+ a5 v9 u
x/= prime;* v4 K$ x ]. `# r/ `
num[cnt]++; Z7 K" k' H9 ~, N z+ V
}
0 D4 E# o# T: m3 X0 c0 D }, x, F& Q8 U& n7 M% `
}: c' e' ~! ~/ d/ l/ X
int ans = 1;& _; V1 I, S! H" q' N
for(int i = 1;i<= cnt;i++) { //计算因子总数
. Q% n4 A5 J8 g& d5 p2 ?, w ans*= (num+1);+ Y( U I+ x) j$ c+ C% @6 K
}& c9 I/ d. c Y! w- Y4 C7 t
return ans;
9 L+ z( o8 o4 [. {1 @1 ~# k5 O}+ w o$ p5 ^, C; I3 Q* s8 l
, Y9 P* M' o9 q" ?4 iint main() {/ z- H6 E( l, Z$ n# L C, v% A ]
init();+ ^. C4 X, \; x$ V3 T
for(int i = 99;i<= 1000000;i++) {; S3 p% t: d- h6 `) [1 w
if(cal(i) == 100) {7 W. `7 _- Z7 U Y0 B6 S3 d
cout<<i<<endl;
: p5 ~* q- \- a5 Y6 a' y break;
6 L% B5 T' V* g; c) i2 n }
0 i" @1 f4 `1 g& O: J }6 c1 C4 \& p3 I/ Y5 f
/ F+ R- U2 x& D; J( f return 0;& B$ i- N; L+ M! O
}& U0 T: s/ y* V* D2 F' y
---------------------
$ `& \. O* c1 f9 E' t C- q作者:nka_kun & j8 V H( }) L4 ~! A
来源:CSDN # R3 r' d& |; b& J$ {
; p5 o' ~1 O% D
+ ~9 k$ X& @# p9 Z X- `
. ~9 s( F* l S% _" V5 u$ D5 V
|
zan
|