- 在线时间
- 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组决赛题解第四题 ) S- B+ t" _# J
- i! R# t! ?( q# G3 \5 f0 F1 u4 d, C
题意: 寻找有100个约数的最小数( j5 [( i# t% E& g
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)4 k( T: B. N- l' u$ s
1 [& E1 Z# X% }结果:453608 ~ V1 w! ]% Z# D! ?3 C- F5 L8 m
( A( Y( Y9 A+ x) R. \% b4 ]
代码:7 O) F; A6 o' u
9 i% r6 S8 L. f; Q& n+ y4 k$ h
#include<bits/stdc++.h>3 O9 Y3 y- o) p( ^
#define mem(a,b) memset(a,b,sizeof(a))
L7 |8 L' Z5 a- ]4 J. ]using namespace std;% n/ H; c# P% p- z; z9 P. Z7 j9 W
typedef long long ll;7 N* O# t- X7 I# {
const int inf = 0x3f3f3f3f; }5 v0 A# c4 x8 ~3 y
const int maxn = 3e5+55555;! M( Q: L- y* M5 z! m- c7 H
const ll mod = 998244353;
8 X5 }8 q. K H" i9 P( s5 u1 ^/ Hconst double eps = 1e-7;' R& N, M9 U! U+ U" w0 s6 M! B& _7 h
7 e- M/ r9 z, w
bool vis[123456];9 z) ^& w$ `- q* W) Q
vector<int>prime;3 s6 [) h1 W% j4 ], f7 x' R8 v
# K \$ W' t9 ?! C8 Uvoid init() { //素数筛
. {5 x8 i7 B$ _& W5 b for(int i = 2;i<= 30000;i++) {3 H2 Z9 Z" F0 P! W9 M5 j
if(!vis) {
' o A5 f1 v8 W/ U& C6 V for(int j = i*i;j<= 30000;j+= i) {
% _+ C g* U' W, ] vis[j] = true;
% z/ @ J! v0 p: n0 k }" q6 p# T7 m. l* S/ h; o
}0 a# O: K. Y; a9 C$ j3 p/ R
}6 w+ R# y8 w) w% X# h8 v; |( S' t
for(int i = 2;i<= 2019;i++) {
, R; t H# ~, I( r& w if(!vis) prime.push_back(i);) }8 m' z! Q3 h& e, x. D6 |, S2 b% \
}! d6 d% p4 N4 h0 c0 T% p7 {
return ;3 z5 _; _5 I. H( B U0 R( {$ ~# X* a
}4 y( K* i0 v# j% v6 | A; n
0 O, {5 t/ L4 _
int cal(int x) {
% a/ T" s$ u9 r) @) g int num[123];
1 ^, A6 f" u$ z9 u4 O9 y mem(num,0);* u1 W/ Y& [( L
7 A$ {+ C2 d6 R int k = prime.size(),cnt = 0;; F4 g: ?5 y/ I' ^2 S
for(int i = 0;i< k;i++) { // 分解素因子" \1 L' r& x! A7 x Q+ O5 G$ V. V5 g5 ?
if(x%prime == 0) {
1 j* U3 R- [/ R: s* G cnt++;! i/ P3 X m* a0 _- [2 O1 t
while(x%prime == 0) {
) P) v4 a3 G' N2 x8 v, N, Z x/= prime;/ `8 e: {& j# ]6 |: z! |
num[cnt]++;5 ?" O$ U" r( n0 l6 A+ u) ]8 A
}
8 h3 D( A4 G6 O( K% A9 T }
8 J$ K! x8 J, s6 [+ Y }& a f. I8 P4 }
int ans = 1;% H, a j c+ A( S6 ]( K
for(int i = 1;i<= cnt;i++) { //计算因子总数
2 }! U( ?4 _2 i, k) B) u ans*= (num+1);
9 l) T" c$ L. q* F# W: F }
3 Q) s" y5 E- Q: p7 f0 D, a return ans;- L; I9 c9 k7 e' Z3 w- F
}
w! V. F) D' c0 K/ f" J2 E) h# D9 s, S. c9 j' n, v* m
int main() {9 l: Y/ `- i# [; J3 a
init();
: \% ]8 P1 j2 s0 [- s& {4 R for(int i = 99;i<= 1000000;i++) {
2 @. l1 N! ~5 Q; i' F if(cal(i) == 100) {
4 \9 y7 \; N3 F. t' q3 R6 ` cout<<i<<endl;
( [' v# p2 ?9 o* H, v break;8 N8 ^! k/ }! B3 I- C
}
& {, H4 h6 o" t. G }
+ {; b `' `2 b3 f2 l U+ m( s; U
1 \8 y3 n9 U2 @ return 0;, q5 w5 @; N% c
}. g: m+ t+ u& f4 W+ g0 Y7 ]7 } L
--------------------- 8 b: I+ m$ x6 k3 o
作者:nka_kun
" U9 w; h0 l+ a0 M; U来源:CSDN 1 T' v+ D; i7 e6 k8 z
: v4 }' e$ |+ n
( q4 b _- x+ \0 R- j" C
5 [- C b* s& F+ F0 a |
zan
|