- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563319 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174219
- 相册
- 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 R1 q( o$ K4 F8 B0 o" U% @
% t+ f A! \4 \% }3 b, S题意: 寻找有100个约数的最小数1 `" y- ~! H8 a5 x, e: m6 D8 _. \
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)
& {! [5 n- G, x. O6 s; [! l: @( Y3 l' f) w+ Y+ Y, H/ n# b0 j: j
结果:45360
; K* }6 F$ b5 i+ Q! _; I7 @/ T/ u) _
代码:1 H6 g( H9 [$ b+ M- V! v4 d2 y5 u
0 B, M# a+ w6 z4 f7 F
#include<bits/stdc++.h>
) }8 i0 r/ d3 N# u#define mem(a,b) memset(a,b,sizeof(a))
- _ D1 D U0 [ U. M% I7 Pusing namespace std;
) s7 H- G& y3 z# [typedef long long ll;
& R% Z3 T/ }4 d/ R6 E0 X; i2 Qconst int inf = 0x3f3f3f3f;9 T# i C8 D" |; h: X, Z8 U- }. `2 G. h
const int maxn = 3e5+55555;% i( V/ ^0 j) W. r* R& A2 O0 U) l& u
const ll mod = 998244353;
. e4 G& g* N2 P$ o" g* V- ~const double eps = 1e-7;
% B3 J7 h9 g; c& P. b3 ^0 G4 }
. v- t6 ~, k# o& K/ ^+ n+ c' s; cbool vis[123456];) U" V- G; ~$ U+ j: S
vector<int>prime;
* h( g3 X' `- H: N* h& g) K* M
& v( f2 {2 @0 Z W" p5 Gvoid init() { //素数筛3 ^1 M' P" n- H4 W0 D! O3 K
for(int i = 2;i<= 30000;i++) {
5 L$ N$ K' B8 N' M9 p/ | if(!vis) {
% x# q% X3 z: i8 h( _5 j: d, J for(int j = i*i;j<= 30000;j+= i) {
6 G" N6 F" v/ m3 D2 J2 y vis[j] = true;$ u$ s5 M, n) z3 S2 ^# s( Z, p! D" \
}
, X$ C9 N* J- j0 i( V. q- ? }
7 Q$ _$ b# L0 C8 m& K# j% Q }# j7 ~1 v" B! o& }
for(int i = 2;i<= 2019;i++) {
3 ?+ _) F: u* H- t. \ Q- }; j) }& d if(!vis) prime.push_back(i);2 ]9 k2 N+ p8 l1 e' H! E; J$ \
}
2 s$ w8 R; \' t; ?9 M9 P return ;3 F. D3 q, v: H& H- U7 s* N- b
}' S" @/ W3 a; C2 P2 J; W
# E. _5 ^: W* F- _( y
int cal(int x) {
E+ M0 i, X q8 @# D* @) A int num[123];# [+ {3 [: q, a& g- m# e
mem(num,0);: j) e) G' q+ D5 L5 y
! g0 x1 s. Q' ?, r5 H( N2 @6 { int k = prime.size(),cnt = 0;- _6 n/ U! D! v& w; e
for(int i = 0;i< k;i++) { // 分解素因子! Z0 |0 V1 Q: I( F0 u
if(x%prime == 0) {
, D. ]1 ?0 Y; R5 q k3 F cnt++;* K4 `1 d9 Z* Y6 {( f
while(x%prime == 0) {) \2 y. z5 F" |$ P: I, A4 K
x/= prime;
* b$ | Z6 n4 g! T. I* ~4 B num[cnt]++;; X2 P& s1 {0 h3 L
}
' ?" p: v" R% Z' t3 u) \ }
1 `( L7 u) H8 b: N }" ]1 t/ r1 J; Y, B8 u6 j$ ]/ z
int ans = 1;) J2 s f# @# ~9 l! Q
for(int i = 1;i<= cnt;i++) { //计算因子总数/ l# K2 `: p4 p" D8 X
ans*= (num+1); l% g/ y, x: E8 d6 {$ f
}
* [: \ P% P& y4 z return ans;
% d, q) R6 c6 y' u4 q}
, X% Q/ ?3 g# P$ H8 D, ^$ X* k3 t h( z/ |( h
int main() {
* ]) c( s- r$ S! s init();
1 U' z6 F B8 w5 ?$ j for(int i = 99;i<= 1000000;i++) {& w! w5 p% l1 S! S
if(cal(i) == 100) {* l2 [9 q) v" f
cout<<i<<endl;
! z; C: r8 ~/ v* W) A$ X break;0 \1 K( S8 I1 T+ a& y3 Q+ V
}: b% c: q4 o. _* O9 s- T2 q* P8 j
}5 U. f0 y1 y* \- o) @
1 `4 O0 q' f2 k$ S. o( z return 0;0 s$ P, } A) K4 j- Y
}; F2 V! P' O' M8 I& G
---------------------
, Z+ h, r( C) @! [5 a3 P5 p. u作者:nka_kun 1 v7 N$ ]" U! Z7 Q+ {
来源:CSDN
6 G, x* L" J& Q' w* A! F: @
5 M9 F* O1 y' I& E0 k7 |/ j P' M0 Z5 ~
& q5 o G: d* u s% H8 P
|
zan
|