- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 569175 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175975
- 相册
- 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组决赛题解第四题
, ?- b; u+ V. ?2 E% e5 A
) W4 Q" a$ t+ b% R题意: 寻找有100个约数的最小数( P& w7 O, L6 B+ @& p( ]3 R* \
思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)
Y6 j3 p: L' G$ }9 S: x$ L3 S
7 q- M# b% Q) o4 S- _: }$ U结果:45360) U$ q( b8 o4 A$ F$ ~% {
3 n9 W6 \! E- h" @8 A% i代码:
, G1 ]2 k$ c! h7 H/ d% j, n/ b7 [ p- H9 F$ k0 t1 d
#include<bits/stdc++.h>
: G$ H y$ F7 l. F3 _% x#define mem(a,b) memset(a,b,sizeof(a))" w% G. C1 |2 U6 B. V! B0 X
using namespace std;3 ~0 h% Y* ?; v1 e
typedef long long ll;# `; U: s6 y/ g" W# g9 n2 B, S) N; \
const int inf = 0x3f3f3f3f;
( r( D1 X# @* `, F. Bconst int maxn = 3e5+55555;
4 K9 J7 M& p q0 |9 n, Hconst ll mod = 998244353;) Y9 Q) p% E1 I4 q" }) J1 q2 C
const double eps = 1e-7;
4 {( ]: l$ z. N; W1 [; s) Q' O. ^' I. J
bool vis[123456];
. R) x/ W% X* j- E* H" Rvector<int>prime;
8 f+ K# g& g7 w8 I+ t/ j/ |
7 V& _% ?, o: P# f( U$ hvoid init() { //素数筛
/ B8 r W9 Z% y$ J3 \' ]7 P for(int i = 2;i<= 30000;i++) {
% j- w* _ s- c0 k9 V8 Y if(!vis) {
; t( c1 K3 y9 P- {' a' c8 J: {: K for(int j = i*i;j<= 30000;j+= i) {8 z a. s7 l% J* x1 x F
vis[j] = true;# ]7 C+ s4 @. q, X0 V' p& v' i, o/ K
}
% x4 W- N2 ]1 N0 j }* k- ~4 j# E4 B3 s
}
- |7 w8 @; I* P. j: ^8 \ for(int i = 2;i<= 2019;i++) {! J, F3 |1 s+ H$ E$ t0 N( F" ~
if(!vis) prime.push_back(i);
; l+ w! J& K Y7 N& |2 ? }
. Z" E9 @4 N+ Q3 ?( e return ;; G/ R$ \3 Q; [8 E; d( V: A) `6 F
}$ L$ J" e! n# e9 u9 ^4 a3 z& A
" V# U% @$ r. ^( vint cal(int x) { 2 n1 K1 v; F" n8 o" {+ p9 ?( [
int num[123];4 }8 h' T5 N+ c: \& p) Z: c* p
mem(num,0);
O5 |" Z' G K6 l G8 M' A$ Q; g7 W0 _0 c. `- K% |
int k = prime.size(),cnt = 0;
' L4 z) k4 F; {/ f, f for(int i = 0;i< k;i++) { // 分解素因子* Q A5 Z' O5 ]. D2 s; B
if(x%prime == 0) {
: ^& M" j% d6 v) f; \ cnt++;3 ?; N; y8 Z) ]# G! {
while(x%prime == 0) {
+ K/ t D' h3 [: p x/= prime;4 E! I) t# m- d$ I, U* G
num[cnt]++;0 K# B% f+ u3 Z7 w1 X" G
}
0 A! x. x2 m- x8 Z0 I# z# R" L }( x% c9 V, ?! h( `8 @4 T' \* h- K
}
# h$ g, Y7 N# f4 U8 f9 c2 W) b int ans = 1;
3 W7 z! L6 |" O, n. f7 m- q) y for(int i = 1;i<= cnt;i++) { //计算因子总数 k( d$ Q) w( c$ `
ans*= (num+1);
4 B1 Z$ ]/ C$ p2 u% t6 H. C/ h9 Q }
) T3 Y( B- C1 \6 c: x3 o return ans;! J/ @1 u- q2 u3 ?3 c5 W! D) {8 T& y
}
8 ~* _0 Q: f0 E# H
( L8 O. r X3 O3 Kint main() {& |9 ~0 ~5 ~: s
init();# h& J. V7 [* v. `$ v; u1 X1 @
for(int i = 99;i<= 1000000;i++) {
' D; I+ l+ B% ~( K+ l, Q0 u2 z if(cal(i) == 100) {
& d) {; e& `* U5 n% {* n6 {8 u6 L cout<<i<<endl;
/ Q! i% G4 D4 i% V break;
0 P$ ]$ U4 |" x$ B' d# Q1 t }
# q( J/ R8 e& e6 d }
0 F4 A. ]. p$ E2 v5 Q1 i, ^, b4 Z6 w3 n5 Q+ ^4 e4 |, N* A
return 0;
6 D7 L0 g$ X3 X6 B9 |( b5 r}. C4 u. N$ [* h
--------------------- + ?* H* W# n4 E+ v9 @# M' j
作者:nka_kun
) e/ a: @5 B: x. W. Y( f* ~$ U来源:CSDN 5 t& Z1 Z% q% d0 n8 {: g( i( I
( A# T) K: L1 F3 n2 i
( ~% H& ]9 A4 M+ [# S" t( E
+ C3 w. T/ g2 ?; _) ~ |
zan
|