- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565664 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174922
- 相册
- 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 E( `( o! C1 F' G3 @; i' F8 q' m( k, M/ f- u# [
题意: 寻找有100个约数的最小数
& R) q, W4 r; u' p思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)
/ E* l9 ^9 N3 o2 Q, D- C
% N7 H3 Y2 G& s3 x8 J" |, G结果:45360
$ L3 P* B0 S, c( V9 h n- G, L8 k! R8 S: b, x. e
代码:
1 U J4 p0 f% d+ |! s1 t" {. M4 M; Y5 s7 ^
#include<bits/stdc++.h>
0 i+ M8 y8 z F+ Y#define mem(a,b) memset(a,b,sizeof(a))2 {8 `. X& j5 f/ E$ s5 Z3 M, P+ C
using namespace std;
: G6 R0 N$ T/ H9 atypedef long long ll;& G9 ~% M- X. i# Q# G
const int inf = 0x3f3f3f3f;
+ d4 g& ]- R8 g2 r7 dconst int maxn = 3e5+55555;
0 Q, b+ t0 C0 M1 y7 t# vconst ll mod = 998244353;
7 d% y, b, l' [9 g& \$ }const double eps = 1e-7;
" d7 F( I8 X/ b4 ?" r+ G
$ w0 W* _! C; q" Nbool vis[123456];0 i6 U% F$ d! O/ Q7 F9 r- b
vector<int>prime;7 h% j" k. d. v4 H2 c9 P, [
( x* H. R9 t2 o. rvoid init() { //素数筛' E- P: j; B" T+ H1 E& V
for(int i = 2;i<= 30000;i++) {* s0 }0 |$ M+ S
if(!vis) {) j2 p1 ]* ~0 z
for(int j = i*i;j<= 30000;j+= i) {+ \0 q X: Q8 p, {+ @% q- e" k
vis[j] = true;& L) t/ X; ], Y1 S' ~
}
- f4 e+ W5 C, x% v1 S! t }
/ f( P \& j, t( w" p1 x: b }
5 Y( w, K. [( d3 U for(int i = 2;i<= 2019;i++) {
! j& n1 c) ?7 b) _ if(!vis) prime.push_back(i);7 f4 E7 z4 S$ Q. x: ?" c2 r
}
2 g* c8 V' l$ R( K5 x, T, _ return ;
: b4 O. y8 S% ?" P2 S& C: G}! ]6 g, I% H. `9 n3 }" }7 e
, ~$ t; a# L/ d4 K
int cal(int x) {
+ A6 f8 Q; }% B# J( {0 o/ `6 { int num[123];
1 m" Q$ {7 d% V1 i mem(num,0);! c+ h6 n; o* A* K- P% X% @
" S: h% A7 i# ^7 E
int k = prime.size(),cnt = 0;
7 ?( s2 ~' e0 E; c for(int i = 0;i< k;i++) { // 分解素因子
Y/ b/ k. ]0 h5 n9 k; X if(x%prime == 0) {
; i f8 S8 m, t cnt++;
4 A2 I! P/ l. S2 _% |* m8 ~ while(x%prime == 0) {
0 w$ O( w ]4 a) S' a. t x/= prime;
1 B8 Q4 O+ c: f4 u9 ~6 B, e num[cnt]++;
6 T1 j$ V, s) m* K1 l6 N# d+ b/ L }
3 B) b, t, V9 @& B9 U }
' V, }8 X0 M% Q3 o, e" x3 X p }2 S9 R9 j- J2 x( |5 y
int ans = 1;7 [" @$ N$ V3 A8 y* w! ]& b
for(int i = 1;i<= cnt;i++) { //计算因子总数. t) }0 B- K- {6 [1 u \1 P
ans*= (num+1);
$ I8 p; M0 _: `* v: { }
! w. ~7 V# M- m7 t+ S% F! _ return ans;
) Q* I* o2 u: o4 H# M}2 z8 s4 `5 B3 J- `7 `, y3 ^% v/ R
+ W4 h% s( e5 X6 I" Oint main() {& k' ^6 v6 {$ j; H
init();
9 @; F) M( |4 Q for(int i = 99;i<= 1000000;i++) {4 ]- F1 r( p, m
if(cal(i) == 100) {; D9 S o9 \; V8 M7 Z0 g
cout<<i<<endl;
7 r1 ~2 y4 }" W break;
: P3 O3 |" E1 E3 W) S3 V" q }- m" q3 o5 z$ H
}7 c# i7 @1 Z7 D6 H, T k
$ Z9 \2 I& d! ?8 t7 n2 v return 0;
5 B. W5 L" S. V' D+ j}
- S# J% ^- ], g: ?4 ]---------------------
; o3 x3 B( [9 {/ B" ~7 Y2 h作者:nka_kun ) u/ P3 G3 P& N" w
来源:CSDN ( Z6 ]! r6 N8 B4 B9 i& m
; Z5 P9 A9 `9 F: F Z: g; p7 ?% `2 E' M7 Z% W; j. T
1 M3 _% v* c7 y7 @/ b |
zan
|