- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565750 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174948
- 相册
- 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组决赛题解第四题
2 ~" o {- {( G: ^6 o# ]+ o# B; `- V! Y
题意: 寻找有100个约数的最小数! p8 g2 E: B3 }
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)+ k m- T6 n8 X o
: j) n: H' T' r8 W5 V
结果:453605 n, l( U! D, L
, U9 R0 H1 B/ a( H& z1 M/ h代码:- ?. Z5 |, r; R8 c
3 R8 K+ D0 [5 B& L* x$ v# T7 d#include<bits/stdc++.h>
* w$ m! V/ E/ h6 e4 q#define mem(a,b) memset(a,b,sizeof(a))
2 I5 o9 e' g% n+ u; N6 Vusing namespace std;
: b# N4 V* p# h: R2 b: C7 rtypedef long long ll;
/ U1 _# h' v7 ^7 |/ l; A2 \const int inf = 0x3f3f3f3f;
$ V u+ ]( p3 @9 F2 G& Zconst int maxn = 3e5+55555;/ F9 I9 q2 n+ u; m0 `; L6 m/ R
const ll mod = 998244353;
' g( ?+ `1 a$ h: Pconst double eps = 1e-7;
1 _; P0 X4 ]8 I* a+ i
* X& L# f/ _9 {' F: Y& wbool vis[123456];# i8 F( @; J* c7 W7 u6 Z
vector<int>prime;
) b4 ~$ q: @ B: f$ { H4 b
) U) b9 A+ ]: _' O; zvoid init() { //素数筛" e3 q6 g; G8 ?7 X( g
for(int i = 2;i<= 30000;i++) {
. G8 {! o& H- O if(!vis) {
! ~: B* l8 ]8 `$ [' h+ P. r# ` for(int j = i*i;j<= 30000;j+= i) {
. v9 ?" ]/ G/ @. y4 B4 g9 r2 D* Z vis[j] = true;; v: m2 z- |8 @
}- X5 G8 K7 p L) P$ i
}
% ]$ `$ s* v1 l4 n: e }- Z& r7 g. q6 d" Q4 @- E2 U
for(int i = 2;i<= 2019;i++) {
' i/ `0 ?; u9 V n$ c/ I if(!vis) prime.push_back(i);
: F' \! l0 [4 e' |; i2 O }
3 P2 Y4 A4 C& ~0 l return ;
. i. }% t3 G* V6 F6 B* D}
/ p; {1 p0 }1 E1 Q! P& [% Z+ L1 T5 Y, x3 z
int cal(int x) { & J0 A) B4 Z! Y# c5 `0 i! f
int num[123];7 |) n$ @6 p: i( u' B6 U$ P
mem(num,0);
& @; w; I0 E$ }* S/ l+ {9 z
% P8 a7 \: E. `7 } int k = prime.size(),cnt = 0;
$ W# F6 u, ^6 ?. l+ H; J$ j for(int i = 0;i< k;i++) { // 分解素因子! p) Z' X/ m+ F/ E$ b/ @
if(x%prime == 0) {$ U8 o8 L# O+ y" ]3 p
cnt++;6 D1 {: O, |4 x8 ?- S
while(x%prime == 0) {( g' \. v2 y( b) V7 U1 b) H
x/= prime;3 ]& p- ~, m# n3 o+ `8 x
num[cnt]++;! s8 L% l" i5 z3 J/ R
} |( b# V3 X% ?4 v4 R4 n! d
}* z' ?, A" P4 `& }6 l
}
3 u8 [* W# U* F; v; K: d# r. ], { int ans = 1;1 l4 Z& ^( |: n3 \
for(int i = 1;i<= cnt;i++) { //计算因子总数8 b$ Z- @5 F& h$ h
ans*= (num+1);- P# K" t: U4 _7 }6 g. G4 b
} f6 v. m+ R4 c- k; `
return ans;: f7 \# J+ v8 U1 h( Q) l3 B9 U
}+ ~9 z, {" v' _- k% ?3 _* U I
: l3 i% J; ^- p+ @- ?+ Q; Y1 {
int main() {8 B: S {' E( L% c, ]
init();
. ~# C" d; q. O1 q$ S# B for(int i = 99;i<= 1000000;i++) {: M' c! q" A9 Y* c
if(cal(i) == 100) {
6 I5 x Q$ {# T& g cout<<i<<endl;
+ f: z/ N+ B1 F9 H4 S7 y# e break;
8 Y. S* u% ?# N2 d9 M+ }& \* x8 {1 r }
6 V- C) \* A- u P$ t% [$ {; q }. p0 h n' j2 s
: L0 b. z7 b; k2 `$ W return 0;
- J/ G! |9 I5 V: b, f$ ]1 I* G t}
! \. @+ Z, o+ j( Z) \--------------------- ; a8 w9 K# J( D
作者:nka_kun * C: U2 E$ g, W5 ?: b+ ]& V
来源:CSDN
' f' e2 I+ t. ?: Q" {6 s8 Z
* h5 l4 Z' u8 q( u" q8 \+ _+ o+ M% z6 e% O
. k$ P- {, Z7 N* F( ]6 a
|
zan
|