- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563316 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174218
- 相册
- 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 j9 U) }0 N. H, \& s5 r2 l7 k1 d1 F& w
9 u! F9 [9 d. S ~题意: 寻找有100个约数的最小数
# _5 B$ P" X2 F思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)
! s* R4 b4 {2 s0 d( j$ X5 g5 T- [# W( S) P7 l" X
结果:45360
7 A/ d( b, U7 b; z' y K$ {7 s7 V1 R% ^ I @
代码:
& \- _4 M. s5 y8 i
. I7 j' Q+ R4 w. b#include<bits/stdc++.h>9 b% j! f8 ^4 o
#define mem(a,b) memset(a,b,sizeof(a))
; O0 v+ j" L) _3 r0 G/ \using namespace std;
4 r$ B9 m. K9 \: d' \typedef long long ll;
3 O8 k( Z/ S2 G, Z- bconst int inf = 0x3f3f3f3f;
7 n% c J: m: f8 m+ Xconst int maxn = 3e5+55555;
& ~0 o: I! h( A1 bconst ll mod = 998244353;
s. M% w) \1 N* sconst double eps = 1e-7;
( h( ^8 g- X3 l. k& w% U+ F; U
! q: P+ _9 D( c) _/ x1 Zbool vis[123456];$ I3 o' i4 V; ?8 a5 g2 g: B; d
vector<int>prime;
1 J* i' Z0 z3 y! N
* a* y+ _1 l/ k8 ]& bvoid init() { //素数筛
, q" @5 u3 N$ ?1 ]- S9 @- D, d for(int i = 2;i<= 30000;i++) {
* C4 l G/ j% @: @& F" _9 n if(!vis) {7 W {6 L4 | [% d0 d
for(int j = i*i;j<= 30000;j+= i) {2 |' N J6 F8 o1 v, C2 [
vis[j] = true;
: H/ l/ a. E, ` J2 [! A" A }
0 n4 {( c# {+ O' @8 q* ]$ V4 M }
- O5 c( {6 w: t: ~ }
7 g; ~( }. J% i0 B for(int i = 2;i<= 2019;i++) {
9 ^/ { O7 k4 {/ P- y/ p if(!vis) prime.push_back(i);
+ m- [ T2 N/ U }
: I7 h- Z- |/ e return ;
; j. k' Y! V0 J3 K! a3 l}" ?% V. V- t+ I4 U2 K
0 }) ~# H/ F3 J; R: S* Tint cal(int x) { 8 b$ O. x$ a: c
int num[123];
2 [4 c! m/ m3 J mem(num,0);$ j) ?3 L+ h! u2 ]+ b
0 e7 C# Q# D$ F9 F- u" g L1 o
int k = prime.size(),cnt = 0;# A5 x8 G8 W( Q D9 f h$ Y1 o
for(int i = 0;i< k;i++) { // 分解素因子
, |% n. n0 y5 ~ if(x%prime == 0) {
+ g1 t6 t9 [/ n cnt++;
$ c; a& q% L/ Z) ?4 N while(x%prime == 0) {
5 _0 w: A7 r7 R3 | x/= prime;% `6 U r% o8 | [! k
num[cnt]++;/ h$ G5 o; [/ q E3 L
}
! g3 ^7 [& ~8 o1 f' ^- n# V }
* U2 |6 M4 q% v9 U& x }" D$ W/ Y0 C/ A2 Q: S5 \
int ans = 1;
( f+ Z ~5 h3 p$ ?' M7 E- m$ \ for(int i = 1;i<= cnt;i++) { //计算因子总数
+ |* r7 G6 c8 T5 A! E, e ans*= (num+1);: d$ m6 E; [! s: x7 u
}; h& D5 I: G5 v- I) j" A: A
return ans;
: f; H6 c% ]$ L: f- O- _! P5 h}- A2 V7 j6 t5 W% }( P# L
- K9 S7 P1 [# c8 [1 a0 z+ i
int main() {
1 C/ @+ J* x( \ F" e* a' a init();8 C8 U" N; o) K: s. {2 r& c
for(int i = 99;i<= 1000000;i++) {
* |# T6 }5 B* ?3 w# [; z) z if(cal(i) == 100) {; _3 Y' }8 B/ `
cout<<i<<endl;
6 M8 I) [ j- M0 R2 ]1 d: o1 F break;
5 ~' b1 Y2 d6 |" P( \ T( p% D0 P }
; ?4 P2 h& E! p$ e }
) `+ @/ a4 N3 A4 S; m( p; p/ ?* x, {
return 0;
. o0 I" W' q) X- X}' H6 R$ z3 H0 \$ x9 `4 k( [% M
--------------------- 6 s( x" Y: ]1 d4 @* E6 H
作者:nka_kun
P# ]% _; k3 X' N7 l来源:CSDN * R. Q7 p3 P e+ n3 K6 b
# _6 g+ f7 q7 W) Y8 i9 A
( W) X" o& e; R8 @( I/ I" j& y g( j' U. [8 K* L. D
|
zan
|