- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563399 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174243
- 相册
- 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组决赛题解第四题 1 z$ K; T0 H! l+ h) V- }. L! e& D
a8 D4 S2 K3 Q8 h5 G: f# ]& x题意: 寻找有100个约数的最小数" N3 l9 E; U0 f1 \
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)" \/ ~; r7 ^( q/ w8 X
0 m: Y7 g4 q- y* h, r) {% P% z
结果:453604 ]) z6 p$ Z1 N
; r4 j' E+ b K2 Y4 D# g
代码:
, {, P; \, z6 U- g# L$ | |) ]. R7 n7 H* g5 U" i! ^
#include<bits/stdc++.h>( o [' ^* w5 R
#define mem(a,b) memset(a,b,sizeof(a))
i- a4 ]* M8 l, h; _using namespace std;2 g3 z c# M1 w5 M% Z
typedef long long ll;
! l1 ]; b" b) uconst int inf = 0x3f3f3f3f;6 b$ |0 o: {6 ]; O5 u S( X; F
const int maxn = 3e5+55555;+ k! r0 [3 p8 k( z1 I# k' b
const ll mod = 998244353;' P7 J. T P5 h
const double eps = 1e-7;" m2 V; U: u* i/ h$ K* e! H
/ H5 g* `7 y+ D% s3 p( t, p. \: s
bool vis[123456];
6 }4 O1 h0 Z3 _( l% E! g6 e; Y! m( kvector<int>prime;
1 K/ H8 q9 o, }* J5 K
0 @& D0 m: [/ s0 Lvoid init() { //素数筛
/ _$ x2 {- c2 S) [+ `4 N. ^% H0 g for(int i = 2;i<= 30000;i++) {" `7 r1 V' \% R3 x
if(!vis) {4 Y4 b8 m4 p) V0 R
for(int j = i*i;j<= 30000;j+= i) {
: o4 i7 U2 ?' y% K5 {! { vis[j] = true;1 \7 E/ t* T- d6 Z: [
}
# Q& A0 P/ H4 ] }
- L; G( K m+ E; ~ }( a6 A0 G$ k, N& N+ B
for(int i = 2;i<= 2019;i++) {
& C B- S: q& }1 S if(!vis) prime.push_back(i);$ a6 A) r- I& r3 `$ `( U
}$ H C$ _& X3 y- N, F# x
return ;
" |' e0 V& ^ W' v" S1 h; Z} T- @0 `% |) T0 K, g
1 q5 z& v2 v% H% p6 Wint cal(int x) {
* R: o3 \$ w- ]! q, A int num[123]; p- s1 I4 i/ ~3 q0 }( L: p, C9 M
mem(num,0);9 N a5 s# U* j% ?0 G2 b% z
7 `3 D9 q. _! A3 y int k = prime.size(),cnt = 0;, P7 y/ w. a9 E
for(int i = 0;i< k;i++) { // 分解素因子5 Z, q r1 i# u
if(x%prime == 0) {
# L- H4 X- G' B cnt++;3 B1 p( K9 K' l9 f5 }5 k
while(x%prime == 0) {
3 d0 g1 i, Q& A0 [ o x/= prime;, O: M4 I2 O1 Y; [5 q4 _
num[cnt]++;4 F! d( A; ?( @% h7 _
}
# K! y* X% B$ o }
2 s' y, f8 c6 e3 J. u$ P0 g }! i6 ^/ j) W, a `" z
int ans = 1;
E( U- P8 L. H" U; z6 P for(int i = 1;i<= cnt;i++) { //计算因子总数* P# @/ ~8 G3 I
ans*= (num+1);& A) p# _$ ?# k/ }" h
}) I5 D0 D6 M( W' R* t. j. k, K
return ans;
w4 r. O( q4 @}$ k1 ?( q4 e2 \$ u
+ q3 k8 Y$ Y/ E3 X5 e
int main() {4 t3 ^6 v0 v2 o/ w
init();3 V8 M; N& f' V7 R$ ~
for(int i = 99;i<= 1000000;i++) {
2 c, W @ o- F' O1 {" z) U) k8 k if(cal(i) == 100) {
3 F9 L( ^4 `& h$ v# C7 n& o cout<<i<<endl;
, o2 b0 V8 H" G% g; ?% W m break;) S' x+ I3 \6 U u K
}7 N8 B! \, |3 Q
}
" G: l' `; p/ L# y8 }4 a+ [
: X/ g% L4 G) E T1 g7 t# ], d5 B return 0;
4 w% R, t7 d0 E- Z8 z1 h}5 h7 {' {7 w5 _9 g
---------------------
5 q' s* P9 F% Q0 Q% C) ~1 p# Y; M作者:nka_kun
: t) b2 F6 r0 g6 z$ e来源:CSDN 7 ]2 M+ _4 x g- D! {# G
8 I8 o& ]3 f5 U$ k$ S+ i% C
( ]; ~: e% [5 `$ M l6 O% Z3 i
3 I4 |1 u. ^3 ?: ?. Q3 p |
zan
|