- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565699 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174933
- 相册
- 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组决赛题解第四题
$ x: n4 v4 `! u3 D9 { z2 k3 C! F: `6 ^# H/ v3 v% c
题意: 寻找有100个约数的最小数
3 \, O9 ]+ ?4 ?* g T4 i3 o思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)# H. y" P0 J: Q- J+ t( {$ q, g x
6 s( K& N* S5 R1 d: `8 z3 G结果:45360, y' W6 ?$ u& ^+ S% R' l
8 d* P9 a5 j7 @3 u- X代码:
% _/ q6 A# i* X* e0 V$ d) A0 W ^! f+ A! f! ?
#include<bits/stdc++.h>8 b* c/ g# a: f
#define mem(a,b) memset(a,b,sizeof(a))
+ f2 H! }" M& ? l; [using namespace std;* p9 H# }+ G( V3 @( ?; V$ S" A
typedef long long ll;
% B; S# l5 ^1 r. C) P( b1 xconst int inf = 0x3f3f3f3f;) l# r, F+ F" T6 T( m
const int maxn = 3e5+55555;
' c$ a0 g* G S+ D: C& j. h7 Nconst ll mod = 998244353;
9 y( h7 F& @2 U" \const double eps = 1e-7;
6 C1 u# i6 Q4 Q* e# b/ n6 {8 v ^( `" n( r9 ?/ t
bool vis[123456];/ B* H6 Y5 {2 I+ ]0 |
vector<int>prime;
% V5 V" o- k3 B9 E8 R2 K
: G+ V7 s. W+ H- `void init() { //素数筛
" h9 P7 P( v7 C. a$ s" L% ]' J s, |0 R for(int i = 2;i<= 30000;i++) {
5 }( @# M+ D! t8 _0 |$ m if(!vis) {$ E) g% f8 t* f1 X6 [6 R/ x5 O9 Z, J
for(int j = i*i;j<= 30000;j+= i) {
: X0 \0 c& s) P1 b% v& y& C vis[j] = true;- n2 ?7 O* Q8 p6 r$ o
}
: W! ~9 h' r8 S l# m n0 g }
6 B1 w5 t( U1 ]5 U7 A; l }* L5 }! Y$ {4 @
for(int i = 2;i<= 2019;i++) {
8 ~6 O8 e' G% V if(!vis) prime.push_back(i);7 ?5 Z# H' l }# Q
}
* j7 @5 }4 j' U. ]8 N) C( K return ;
3 W' m) Z$ P& [) h5 I6 a& j3 T: ]}
4 x; }8 b# ^6 _% G6 ^' O& ?4 H4 Y" {; m* }
int cal(int x) {
# _! U5 G0 `* U7 K- C+ l int num[123];, u8 C; m* T, h) D j! b" R
mem(num,0);" l/ a" A' I1 C" ?
; c# |) F4 s& }: R: m2 M# G) X int k = prime.size(),cnt = 0;/ }8 O! W, I3 h$ }1 l; C9 {
for(int i = 0;i< k;i++) { // 分解素因子2 }6 A' z: C* i, v- f
if(x%prime == 0) {
. y3 |3 u8 q! K cnt++;
# U' I9 Y$ C. o1 ~- ]" { while(x%prime == 0) {2 g( M0 Z& D0 d' N7 A+ ?
x/= prime;/ f/ K8 r4 z5 ^! |6 D6 G
num[cnt]++;
3 v3 f3 c# l9 p+ s- p }4 c+ J f9 m9 }5 h' m# x
}4 E: h ?) F* K" f4 Q
}3 v! ] @7 x7 U5 @7 f
int ans = 1;
1 O* N8 W/ j9 M8 [" J0 |; W for(int i = 1;i<= cnt;i++) { //计算因子总数6 x+ @% {- t5 Z# u1 [2 j8 p8 K6 ~. z
ans*= (num+1);% h& `) n/ D1 A8 A; N; |8 \
}
5 ?7 i, s- A) ~/ b2 c8 ]! B return ans;1 v" ]$ e4 R3 J8 Z
}
4 {$ i# }) h# D5 |7 F9 _$ B2 a# ^
3 s# Y) o. }; |) `1 G3 Jint main() {
9 n! r' A& \3 A$ W4 f init();; Q. N( ~) @; U
for(int i = 99;i<= 1000000;i++) {
: i- r9 n- L8 e+ p if(cal(i) == 100) {5 Q- ^$ O, T- m8 }
cout<<i<<endl;: i/ D k: b# M% _( h
break;
9 @& P, K- O/ ^$ `9 U }
M( X% L' q) ^ }
) W- U( h, j) N: J! g# k9 u/ P0 e. h s# m4 v$ x, Y
return 0;
. d: @2 c# C( N8 T6 h9 L) p} o: }( u2 o$ F
--------------------- 7 j5 e( Y# j& i* w3 a
作者:nka_kun
0 h5 J8 U, b( A' D# E9 l来源:CSDN 2 w X2 s: w, p& s& J/ n3 m
% M& {! r' H2 y. P% H. R
; G+ }5 ?) J" I( o8 Z0 x# J4 e6 C' |- X( x
|
zan
|