- 在线时间
- 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组决赛题解第四题
9 d5 y* r5 m4 q$ S4 p0 K
$ C3 Q- R' q; f+ n5 @题意: 寻找有100个约数的最小数
+ O+ |* O& a: X1 F思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1) A1 j! j2 I9 B# L6 |( ~
: M9 |3 }1 q4 ?# F R! J
结果:45360
2 S/ H' v9 R5 v. V3 {% p
; }8 `% b& n; G5 d4 x# J) A; _代码:6 D3 |' r& m% k' ^! {$ N; w, h
, Y5 R6 |0 e: H8 F- B7 \; T
#include<bits/stdc++.h>
" Y0 D+ c2 ?: ~# ?. I0 x5 l" X#define mem(a,b) memset(a,b,sizeof(a))4 q* K" ]' e o, [
using namespace std;% D' x: E4 V( N6 g) o
typedef long long ll; |" Y6 O) R( u; s6 G! b
const int inf = 0x3f3f3f3f;
/ n+ j/ J: f) ~8 _const int maxn = 3e5+55555;* M' z/ X$ Q9 q2 R0 g: c
const ll mod = 998244353;
$ L3 ~9 C& Z/ u# a" C: tconst double eps = 1e-7;+ w% o C0 |& \+ H" z) S7 L
/ ~; M+ ]. \' I( l! ]! j: c
bool vis[123456];
% q- j4 G( v; O/ v& y' J$ l: Tvector<int>prime;3 r. z! h$ z; s# G
" ?& w$ l2 f( z# ~ W9 R$ |void init() { //素数筛
Q2 ?+ B, s0 A/ u9 v, |8 G for(int i = 2;i<= 30000;i++) {
" W9 B( h; W7 W1 S4 O7 l if(!vis) {
' o0 G2 Y: L7 j) N6 l, x" ~9 t for(int j = i*i;j<= 30000;j+= i) {# I4 X# F" p* @: m9 h% X2 F k
vis[j] = true;/ z% q: B; `' B
}& T r- Z# q+ x. }( B; X- x
}
8 q/ r1 o- F1 j/ n: t }3 N! }8 r! b9 d9 Q) `
for(int i = 2;i<= 2019;i++) {
( W1 ]; I, i; v% f, R$ Y' W4 [: c# Y: X if(!vis) prime.push_back(i);$ y, @2 |) x/ G9 r8 K% `; U% q* [
}0 J, [+ }, r7 d5 m7 n
return ;/ t# c0 @+ Z' H9 k! T" X
}, Y; \0 O& i' e& ^1 f) d
: @2 Y7 F( S' F4 E+ A' M7 tint cal(int x) { 0 d. E8 L) @- i1 V5 q2 V4 j* c* L
int num[123];
3 H& Y2 R" s. J; i5 W* y mem(num,0);) s7 Z% C0 m; a
! ^5 u7 K! \2 o; g a; P
int k = prime.size(),cnt = 0;9 c8 b% a Z) Q" ?
for(int i = 0;i< k;i++) { // 分解素因子
T: r3 n% F1 W2 ^ if(x%prime == 0) {
1 ~: |" R, f$ E% ^0 B cnt++;
- N ?& s& G# W; t9 s, d while(x%prime == 0) {) d. h( [ q" ~8 S5 l8 P
x/= prime;3 p& p2 R; I7 l* M. L, }, o
num[cnt]++;
7 c. c% P. x/ _% ?/ T2 t# H/ }5 m }: |' K4 O: g0 |9 f5 Q' D
}. o- d! @7 o6 ~ \, z; d( G! Z( B
}
" D8 P6 _* S9 p; q i int ans = 1;3 A' { z, O2 J5 U9 @& }) D
for(int i = 1;i<= cnt;i++) { //计算因子总数1 }/ A% ^8 x' x9 W6 X
ans*= (num+1);
: ?4 K7 l) [1 k }
2 s1 `( t5 f1 z* h return ans;
& p n: Q0 a0 O. a% j$ r( y}
8 [4 s+ ^9 g+ H
1 v1 u# I, Z$ W P5 \int main() {
! i) i& u$ u( R init();
! W& x9 X3 N% K+ F5 C for(int i = 99;i<= 1000000;i++) {
% R* f7 n, @5 b2 g b1 w# _ if(cal(i) == 100) {
8 }0 y% [0 o8 W cout<<i<<endl;
& F1 ^! O' ~1 y; l break;3 j5 E2 T3 U' N" @
}8 l' ?: ] h6 ]7 Y9 K3 n
}
) m( S5 X) D! O% T/ [. w$ [* ^- q& m( T! @* k
return 0;" k( a. k& n; l, @1 J# v7 p. f
}, z; ]/ L* v4 a/ I
--------------------- ; }; Z7 w5 J- a
作者:nka_kun 6 k2 q7 b4 y& \" h. D
来源:CSDN
' ?1 L) a2 F6 [4 V" s3 g/ @, J; X3 j8 @: p6 d/ _( ? e- l* ^
& S' m0 ?. R2 r8 V8 u' B2 r1 a2 y" u
|
zan
|