- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 569170 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175974
- 相册
- 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组决赛题解第四题
8 ?- s1 I* ?- e6 Q
) z2 J/ R9 L" I" t题意: 寻找有100个约数的最小数* a5 K* u* f6 ~9 t& B
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)6 v9 [7 o' F/ ?" C
6 \. g1 d1 Z0 o# }
结果:453604 i( ?$ r: a) S$ b4 U8 D/ ?. Z. b
# a, }! b# M+ @# q代码:6 s4 N2 f, H7 ~1 w" |$ q% t
. ?2 y( X1 ~& X. [5 k) Y. t" Y8 z3 W#include<bits/stdc++.h>
% V9 B) g* ^- x" H, d#define mem(a,b) memset(a,b,sizeof(a))0 |$ j# `* e. p3 [
using namespace std;
9 V% @ J# ~0 b0 Q; m# b b rtypedef long long ll;( e% i# d0 x" `" v) [3 N
const int inf = 0x3f3f3f3f;
5 B6 j/ `2 ]# ?: B; Q) ^2 ]. Cconst int maxn = 3e5+55555;0 V" {- |( h# j& A9 z% {3 }! D1 t, y
const ll mod = 998244353;( h8 y) d' T1 b/ T1 J7 o7 Y
const double eps = 1e-7;5 |$ l* q8 z: F! n' e' Z
& r- l5 k6 [& x% X: H: @4 p, x* H# R! ]
bool vis[123456];3 P, K0 f; R9 ]/ E
vector<int>prime;
+ z) X- D0 r& Z9 }: ^! |
T# w" g8 b0 e8 L8 ^ _void init() { //素数筛2 G5 ^! ^6 a- G8 z5 O& V
for(int i = 2;i<= 30000;i++) {
o2 Z5 G9 M4 y* Y if(!vis) {
8 K% x# u1 ~ ~8 Q% c3 M* b for(int j = i*i;j<= 30000;j+= i) {
A1 c, K! T2 o2 e vis[j] = true;; N" c3 ]+ L& Q- N1 c
}
: C0 H. U( ]% G& W9 f }
" R- Q3 G/ W* W' J% K6 U }, C* a4 r5 h% J J0 r
for(int i = 2;i<= 2019;i++) {: u* _. {) ]6 v9 z0 o
if(!vis) prime.push_back(i);
6 S( j, o! J4 r6 B3 T1 q }
+ P5 d; L% u4 P+ E" m1 q return ;' e' o- z) y* _ W3 i& p4 U
}
% q/ [, `" q1 _! p1 _6 W* a+ f8 t: R& r7 Y1 J
int cal(int x) {
& Y6 A3 a& F; S% F4 ~ int num[123];
3 {4 r( ~0 ^ B$ ?0 c+ ?5 b mem(num,0);
9 d$ O/ L7 T- x! x; N9 G, Z6 Q7 ]% h. e, y
int k = prime.size(),cnt = 0;7 v* Z) K# l. V' c
for(int i = 0;i< k;i++) { // 分解素因子
# ]8 I5 a; \1 w+ }0 n- q if(x%prime == 0) {3 d. r- |7 L# R7 Y% H0 b1 H
cnt++;/ Q( X3 s$ a+ G! q7 w* z2 L: Z. k
while(x%prime == 0) {) G% `2 u' W0 W: m, G% L
x/= prime;7 u6 F* y, r! q/ x+ [
num[cnt]++;# l5 i1 [# P6 P5 \. b1 N
}
) }; D2 O, D$ a* F7 N& m% Z: P }9 L, b0 g% W" q
}
2 P' W3 P- c" D2 Z& I int ans = 1;# ?- r3 x$ Y2 k* F+ f
for(int i = 1;i<= cnt;i++) { //计算因子总数9 {6 |8 F7 W! ]+ @( _' m a: F& p- L
ans*= (num+1);
; i# A, q6 J4 _ }" V( K7 L: g+ B2 K5 _
return ans;
1 z$ Q7 J' S! s6 o9 G8 p}
0 n q4 q8 ^& j: D1 v4 W8 S, M5 w6 h3 |+ z! S2 N# q
int main() {' \# R+ z7 ~" A, D8 ]7 p# g
init();
) F* \$ {7 u' A" A for(int i = 99;i<= 1000000;i++) {% I$ r( g/ l2 [) W
if(cal(i) == 100) {
( ?2 B9 M' _) I1 Z cout<<i<<endl;
6 }0 u2 A8 O2 d break;
. ?. y: x. k a3 A. Q }
. Y K6 l7 Z" H; S0 g; o }
' M8 b& s1 r- t3 _
5 c- o# t# h! Z& T a: L8 ~+ p return 0;
4 c2 K9 V& U6 G4 {8 l! x& M( O}
1 K% K; {" x& }3 y7 [1 w--------------------- * ]' v3 `7 J0 ]( x* A
作者:nka_kun
# d. M6 W" s$ v- T2 @3 ^6 D来源:CSDN 9 }9 f' ]' U# Z, y6 k$ N/ N' W
7 e" d, q$ h: E9 R+ w5 d& b# h$ q
( Z- l/ `; }& B) _) H/ i
4 {( q' x$ \% B g
|
zan
|