- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563354 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174229
- 相册
- 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组决赛题解第四题
- p$ ^- H! ]7 Q, P* Z5 X8 O$ A* W5 S7 v2 R, t5 K% M$ N
题意: 寻找有100个约数的最小数
/ X) s. O# g1 Y思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)7 p J) d0 f* g
R1 ?- }! H! F7 B) p# W( j2 G4 F6 U; y
结果:45360* I p g: q& R8 X. U; r
- \& h9 D8 p5 E2 u' [$ p8 Z5 f% O' v
代码:
; y; r& Q6 d, \5 j* R
. G6 ~7 t1 k* \7 c#include<bits/stdc++.h>6 _' G. G) I0 [: r+ o' d
#define mem(a,b) memset(a,b,sizeof(a))* J K9 q2 N! `
using namespace std;* C: c0 z2 B# o/ k( z1 |
typedef long long ll;
# u7 v! Y, m( ~5 Pconst int inf = 0x3f3f3f3f;! O5 ]$ w9 Z5 j q/ G7 V7 w5 m
const int maxn = 3e5+55555;6 G3 W( h3 D6 _, C
const ll mod = 998244353;
4 n4 S! m, N* P9 C& S+ {- Uconst double eps = 1e-7;" m/ v% E7 @! U/ Y0 N5 g# {1 X
4 h) P. o; p6 H# I' G
bool vis[123456];: Q; \+ o; x: U! s
vector<int>prime;
) C- P" I2 E) |0 K3 y* o3 y$ P& B
3 i8 B8 r) Q& {* @3 b# M4 q: B( Fvoid init() { //素数筛
4 A7 L) p3 {9 e! y" }5 q" } for(int i = 2;i<= 30000;i++) {& x9 S9 Z5 _8 E5 C# e) O
if(!vis) {, i5 @5 I7 ^1 P
for(int j = i*i;j<= 30000;j+= i) {- Q% P% F7 t4 K' }2 I0 l; V$ X
vis[j] = true;
) F1 d" M# I0 r }
* ]+ w( i, _+ Q( S- r& s1 A }
; A0 k/ N( P3 x& e- B! j }
" {( s2 }& B7 N9 o" o n/ v for(int i = 2;i<= 2019;i++) {! {) E" v Q2 z/ [7 g
if(!vis) prime.push_back(i);
3 r _" J! R, m$ ] }
) r6 A( g. P/ u return ;) q% ^9 Q' _4 F& ~- i( S3 @1 Q
}1 e* b$ ]/ S* t5 U
7 T( {* P! |$ I+ _. z# B- ?0 |
int cal(int x) { 2 ~9 P5 Y" Z X8 V
int num[123];
/ k/ p+ L* P/ d mem(num,0);
% y& ?' j Q2 E; {& ?) v
2 V+ H: r9 V* L$ n+ ` int k = prime.size(),cnt = 0;( Y' T& ?0 Q( s
for(int i = 0;i< k;i++) { // 分解素因子( g/ y# t" n2 ^3 d
if(x%prime == 0) {
; r& ?" h$ b# \2 a cnt++;( r B. R$ h8 N E
while(x%prime == 0) {
7 N$ n: S/ D! w% x- F# d! I x/= prime;6 w4 B( G2 F* O4 Q1 \" b
num[cnt]++;
3 f6 B: N9 h4 t9 L }, ?" T% W6 D/ J
}9 V/ j: p) `5 l C1 i3 H
}
/ D* y. M/ C& A+ i7 S0 V) f int ans = 1;: x( j# N' Q+ B* } ], [' E2 {
for(int i = 1;i<= cnt;i++) { //计算因子总数) J+ ]: ~2 D. c/ o; p
ans*= (num+1);
8 y7 ~" e+ j* `. e% d }7 R" }6 J" i/ l# z
return ans; ]5 r$ F; j, a
}1 G3 q8 y* P1 N7 `$ s: z Y
. _8 d, E: |! X& Q/ |+ _5 `4 N! ?
int main() {
0 f. `: U; u8 g" [% h5 J; F$ m init();. \& D, X B# x1 @& a5 D
for(int i = 99;i<= 1000000;i++) {
1 y. @8 f. l( o if(cal(i) == 100) {
3 c+ g4 K7 v7 S; K3 A5 ^) }+ C2 N cout<<i<<endl;) M; f, ^6 j1 R$ K
break;
) |9 d+ j% I0 E/ C }
% T+ Z( z2 W0 |. }2 C1 H2 B) B }# P% T$ d9 M" w4 k; T
) |' S& O, V4 w% q- u6 I4 g return 0;
7 n& H& z# f% p$ P2 D}$ i1 C0 E3 d! e$ y" t$ h5 w( O$ ]& X" r
---------------------
0 h- {& a) |" s! a& y作者:nka_kun ; t& u9 v# F) V6 X% L
来源:CSDN
+ ^1 v( Z5 F& G3 I" g& ~/ G+ M" v5 j1 e7 C7 n' r
3 F9 C3 T$ k. P5 q. P
4 }, d! m* y2 Y! ~8 W* {) [, I4 { |
zan
|