- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565629 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174912
- 相册
- 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组决赛题解第四题 3 I% @4 w' x8 O% G
) x, V! [" _4 r B" N+ T
题意: 寻找有100个约数的最小数
& J" k( s9 D6 n( X思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)" _% m0 N, A: t, c$ U9 I; L
9 V, u' {1 C+ [& I' x* e3 f3 ^, i# z结果:45360
1 H5 \6 S# u8 ~! E; \3 z* I& X* g: {# ?9 x# I t; _- H
代码:
6 p( C% F9 G# G5 _" Z5 _, C# H% _" d
( `, H6 B- s( {/ x- F#include<bits/stdc++.h>% W0 {* Z1 _7 K; i
#define mem(a,b) memset(a,b,sizeof(a))
9 x! V. e, \% uusing namespace std;
* ^+ T! H) s5 ?2 _$ btypedef long long ll;8 `( L9 h. h: x, M$ ]. G" p
const int inf = 0x3f3f3f3f;
5 x, ?; D+ Q, o+ i9 w6 L1 k- T0 |const int maxn = 3e5+55555;
3 I9 D% n( C% l) q* A9 Z8 H2 Tconst ll mod = 998244353;
8 c0 }$ b/ ?, Z! [const double eps = 1e-7;0 X& s* j. U/ z! Y% M8 ]
4 B0 d. b6 T$ B# o
bool vis[123456];
& D% g: t' K' s3 Z: l g6 ^: `vector<int>prime;
) r) e: F8 o# V5 ~, n& P
$ ^9 E% u9 C/ o" f# F- e7 rvoid init() { //素数筛' e) O4 A6 F, c0 @$ l" k" R, a! I! K0 b, m- [
for(int i = 2;i<= 30000;i++) {- t2 K9 r/ x/ V* x, T
if(!vis) {
) A0 i; [6 k! U; j$ i4 D' Z+ B for(int j = i*i;j<= 30000;j+= i) {# t; Q3 \ t' ~0 u- R
vis[j] = true;
0 s( P6 l* Q2 g% x7 ^) F0 e7 b }
8 b7 O6 o: Z9 k- ^, c% G* t }
9 d& @9 h3 }: D }; F. F7 F' g% @0 b, u# P' O
for(int i = 2;i<= 2019;i++) {& b' }# N. ]: N2 j. t# ~* t" J' |2 O: U
if(!vis) prime.push_back(i);* B. T4 f$ o. g7 O* }
}
# S* F3 Y( } {/ \/ j4 ^& X return ;
8 J+ x# A5 X" Q& j, M! r: g8 m1 U" M}
4 n8 I d% _1 p1 h
6 i2 H4 I; v9 E/ }2 {6 \int cal(int x) { + u0 u+ s k3 d* u, H$ R5 q
int num[123];
( u$ T4 {9 n! m( ? mem(num,0);
8 Z# m! [4 F3 h. M" Q& r" n! z" ~4 Z8 C6 X5 T# H, a4 T
int k = prime.size(),cnt = 0;2 }9 v V r3 U9 ?0 M
for(int i = 0;i< k;i++) { // 分解素因子
- n4 ?/ q3 c+ Z& e% D x. N if(x%prime == 0) {# B9 r" F2 p7 G2 d* V
cnt++;
% D8 ?: r I1 \: ]( q1 T2 i% |- p! P& } while(x%prime == 0) {. c8 M" C8 h: W: l
x/= prime;
8 D- O, C& a7 V$ F9 A% e num[cnt]++;
9 z, L' N3 d# A8 x }
* v. @3 P( J1 Y }% F6 X B* r5 I* {4 I2 [$ a4 y2 r
}
* |) |2 V5 a' t' y' y int ans = 1;
! |/ x% `" i! x+ Q/ `3 ? for(int i = 1;i<= cnt;i++) { //计算因子总数! x" Y. X2 ~2 z- k
ans*= (num+1);6 {5 A3 J1 Y% A- {* P; P4 W- D0 `
}1 l, v- N0 F, d9 s
return ans;6 A4 K& \, l! i) y8 }- ~
}
9 G& `4 \! |+ P" h1 r5 v+ @- Y) I* t
int main() {, V- L! r5 d% n$ u3 ~# p
init();* T' u7 w' w8 T3 c* P( s/ @/ E* M& u
for(int i = 99;i<= 1000000;i++) {
% w+ G, f }& n9 H( B- l" u; v if(cal(i) == 100) {1 n" w1 n( O B g1 w% x$ X2 c$ N
cout<<i<<endl;
7 S; B# l% @5 p' [( n6 l break;
. s) @* w7 j1 l7 ?! j5 O }1 N' H Q3 i( {1 M; [6 d
}
+ z( ]; F# ~# \, F5 `4 Z8 s
& n0 E! u0 H" ?% r- J6 t return 0;3 Z: e+ v5 p( B. S- {; T/ b
}
: j, [: N, S( N# W9 b+ @---------------------
# e3 _3 t! K/ j. O) q作者:nka_kun + f5 G9 e3 P4 r3 {) Q& \7 O
来源:CSDN 2 G: F- e0 L/ X! c0 i) @
6 n/ ~4 C) A" V; d: {
) R7 H/ B* \! C9 _: `( r/ { C% A: n( P7 `4 \
|
zan
|