- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 569162 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175971
- 相册
- 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组决赛题解第四题 $ W K: u( B1 n+ k3 }8 M% {
% h8 i6 A' ^' }8 P8 ~( p7 _题意: 寻找有100个约数的最小数
! R1 \% l+ r5 b% v- m思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1); U$ H" h# i5 C7 R" a3 `
* K0 Q6 W6 L% p2 U6 ~# w2 y结果:45360
9 ~- M8 T r+ e" U% g o8 {$ S; @+ k8 `: \8 C
代码:
6 G- F% _6 m, s! `0 T) `. I( x% I( v3 N5 G
#include<bits/stdc++.h>
" Z% o; F4 R- p: q1 T#define mem(a,b) memset(a,b,sizeof(a))
5 H. Y1 N. ~; a z P7 rusing namespace std;
' r6 E) U* F' s. ~* Ztypedef long long ll;* Q1 n1 T5 f `9 y6 I/ l
const int inf = 0x3f3f3f3f;' x2 T3 @4 A8 R% O$ f7 ?
const int maxn = 3e5+55555;9 W! n7 E) W4 Q
const ll mod = 998244353;
0 z- C/ I# |+ y$ vconst double eps = 1e-7;
: c: a+ P9 r( n; H6 q* y
7 }$ d+ T" w, n; Abool vis[123456];( s0 i7 A1 [1 n& ~. ]
vector<int>prime;
; t3 H4 C. h* z0 y& R0 ^+ V6 i/ q
void init() { //素数筛
. Z$ a3 C% Q# ]4 C# F for(int i = 2;i<= 30000;i++) {
8 N" y$ C; h# V3 W1 V* A( x, h* h; N if(!vis) {
$ q a+ o# t& p+ y+ v k9 T for(int j = i*i;j<= 30000;j+= i) {
6 Q, Q2 o. Y) D/ Z. } vis[j] = true;
1 I+ X( t7 H6 N; r( \5 b }
+ t2 i j: K8 }, F( q }
* I' w! @/ o3 [0 j8 c% y& u+ m: ~ }6 R0 D4 l1 b* m- ?' f
for(int i = 2;i<= 2019;i++) {2 I3 Y3 ], U' v4 j _
if(!vis) prime.push_back(i);1 E j5 O& v" C; |: l7 t; a1 r
}
) k3 Z7 F% D# j% b( l return ;
, g5 G( U; l* R9 v+ j/ g}0 O _/ B/ ?$ K/ E9 }. O
, b& N) p% h, f% B$ B2 N% y1 R
int cal(int x) { : f% s& Y( ^7 f% T; l
int num[123];0 @5 P! n" D- w1 \4 {7 Q/ R* X
mem(num,0);
! j- P: ^7 f9 z1 R* y/ O5 {9 Q# A* w
int k = prime.size(),cnt = 0;
( A0 Z* x* u7 S9 Z* Y: X8 S7 h! j; d for(int i = 0;i< k;i++) { // 分解素因子
/ ^8 y$ E2 w& p' H$ v. i( X7 u if(x%prime == 0) {
" K& P0 y1 Q2 `7 p cnt++;
' z. B$ H* Q+ j7 Q9 A while(x%prime == 0) {) ], x9 S# x) X4 \5 ~* E
x/= prime;
3 v. |( Q X# o8 r. D! ~1 J num[cnt]++;- Y5 I4 @: D y
}
, e8 ~4 `5 d f% [ }
5 G$ P% h( m2 n% s; } ]$ [! X }) i" }$ o2 [ o, q& i
int ans = 1;
+ ^, S& j" C# V0 b for(int i = 1;i<= cnt;i++) { //计算因子总数5 `6 w0 l0 J- B$ b6 p o a
ans*= (num+1);
7 ] V' J; ~4 F3 I. R4 M# b }
1 ~# m' o% B+ R( d2 Y return ans;
2 @& ]! y2 N4 F6 D' K3 H7 c$ ~}5 P9 q$ k- t& P. S1 t' D
6 M* B9 N( y2 v2 m7 g: ?: d% W
int main() {
& K( X5 E o6 Z- Y/ t init();
, q5 z2 l" c) \0 j) m) u7 {/ a' O" ^* d for(int i = 99;i<= 1000000;i++) {
: Z8 i3 m! p$ _ if(cal(i) == 100) {$ m4 ]/ d& `- b# d" j2 t
cout<<i<<endl;
( U* E% {8 Z/ D- H/ Q9 P8 ~1 k3 Y break;
0 @# {3 I7 Q3 V {2 W5 S' K }
4 }/ y& U4 b: S7 v' l }' Q8 I" _. ] Y- c; W7 u7 Y1 h) d5 f
2 e/ V& D! F& D: I1 W# g! V
return 0;
( D# t. X6 l0 h# r& O0 g. c}! y6 s6 W% s1 c; a1 \( H) O w
--------------------- : j( y, v: M3 k; t+ B( l* h. Z
作者:nka_kun _9 L% G. i5 K {7 {" }
来源:CSDN # A8 e3 L7 h* U
+ `2 r. P0 ], y. q+ v- q" g3 P' v
1 d: \3 c X$ h+ ~
Y4 g1 b+ x! g3 K9 m3 a% X2 V
|
zan
|