- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564477 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174566
- 相册
- 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组决赛题解第四题
) s6 E; v; Y" y J0 O2 P! x
; Q) e% r0 D5 y1 `: E2 o* {题意: 寻找有100个约数的最小数
4 L+ V( g9 w. B7 F( l* s思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1), ^9 D, D) P' C0 N
! o+ F+ B5 h. B# p. M: g: E结果:45360
" d- s K0 R' b9 g9 h( k0 r& }; ]
/ e" }/ O* A( ?代码:1 J1 P% Q( `% G# E- j) _+ n
9 ~. O7 z7 u0 k; t) _
#include<bits/stdc++.h>
; b1 i: a* w( p% t" \#define mem(a,b) memset(a,b,sizeof(a))
X3 a# o. h0 @0 R# h7 d" Vusing namespace std;$ N! I; \) y$ L" p. q' I. n8 m+ _
typedef long long ll;
) Y1 e$ @& R( V [& G1 V l yconst int inf = 0x3f3f3f3f;
4 u! o, h4 u& |( I) Pconst int maxn = 3e5+55555;6 z) p: Q- v( j/ m- t e1 e* O: q9 B
const ll mod = 998244353;
$ m3 Q$ S7 c( I5 Bconst double eps = 1e-7;
6 ~2 k: r4 v" t+ `, [) Y
- P4 j3 \: Q$ h& R* Gbool vis[123456];5 e" u2 h4 Y6 r K& [% h2 Q. D
vector<int>prime;: O( z1 ^0 v+ D7 S! G* _
# N* H$ [1 Y: U" q, Q, D. @! Fvoid init() { //素数筛- x: e# g. Q1 [: ~4 s. n
for(int i = 2;i<= 30000;i++) {' K% X6 k+ c4 y J# K
if(!vis) {" t8 V: B' r; X
for(int j = i*i;j<= 30000;j+= i) {
7 P$ C% t. m1 Y4 N8 A7 I4 M vis[j] = true;
4 X h' ~9 D. o1 q8 r1 p/ S }
3 u$ K7 b' q" c3 \+ B i }7 l8 e4 }3 d0 R1 \& R) Z; D
}
- B M, y% e5 ^; @5 H2 c/ B for(int i = 2;i<= 2019;i++) {8 y" q7 P Y. U/ W
if(!vis) prime.push_back(i);
8 @2 y) G. t7 h/ A3 y8 Q }" O3 H1 C& m( n+ j
return ;0 v. J$ `- B5 i( m; {
}
1 Z8 I1 K: W: L! D& [! Y- \) y6 Z" K
int cal(int x) { : L* t# W5 f: Z& z5 ], V4 c" {( _
int num[123];
1 ?1 k. B% C q mem(num,0);
& A, C- A. q' o- r
4 S# p( E% w: i+ f. V int k = prime.size(),cnt = 0;1 h' j, ? l7 i; c1 C6 d/ P7 R
for(int i = 0;i< k;i++) { // 分解素因子
; f s; I5 ~" v; \ if(x%prime == 0) {
* O3 ]$ ~; s E' k* X cnt++;
) x. ]& I( T4 {% {7 u while(x%prime == 0) { ~! h8 Q' F! X) J {
x/= prime;* ?% @# ~6 Y/ d4 j+ Z# B" p( k
num[cnt]++;% o8 e+ ~% j2 l) r
}+ ]( |1 A& E! A& m& f
}
5 O/ L, t! P. y3 t2 f" O/ s }
, k" B1 m9 k7 }6 `' I! o int ans = 1;
$ S! @. Z& Q0 e- k6 H for(int i = 1;i<= cnt;i++) { //计算因子总数& h3 h0 ]9 a/ D5 F0 B
ans*= (num+1);' K6 o9 Q8 f- r! @/ Z$ u3 E) ^
}' H* v: X( e& g: }) \
return ans;
$ m/ b, a( d5 T k& }9 L4 H}2 ~0 Z0 S/ W2 R0 C ]" K0 V3 u
. |# U; ]' J1 I9 _8 P
int main() {
( C& m7 p8 ?+ T+ i3 ] N1 ] init();
' ` H# P. T$ ]0 P' ` for(int i = 99;i<= 1000000;i++) {
: v2 s0 d2 _8 Y- K if(cal(i) == 100) {
) O5 j7 |0 U6 B% m cout<<i<<endl;
/ n# h4 R% f' G& ~( ~0 d9 j4 ]. L break;" E7 z; [( l7 z. Y+ b; a
}
2 E( ^& x( C" L' C; b9 \ }
y$ s; d: x+ L9 j9 U$ ^" N
& _; R% e" U* a" u3 f) F: q return 0;% N* p" D' B; g) b/ g
}" N C, W5 f! z5 S
--------------------- $ G. Q. M) m3 m; }7 m) S+ T
作者:nka_kun % }: q* K+ Y. [7 `3 \* m& k2 `: w
来源:CSDN & ^8 j3 Z7 a' J0 J3 }% [( S" F
, f7 a7 p1 L; [9 h
1 |2 p: _* P) k
3 G# b3 Q' p6 X |
zan
|