- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564702 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174633
- 相册
- 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组决赛题解第四题
+ y* j- k' d3 S2 }: r* h- u2 z' ^ B s1 Y5 a2 @ w6 j
题意: 寻找有100个约数的最小数
1 ]: s) a+ n! n思路: 本质上就是用了素因子分解,假设分解出来的素因子有4种,分别有x1个,x2个,x3个,x4个,第i种因子可以选0个或者1个或者2个或者···或者xi个,那么因子总数为(x1+1)*(x2+1)*(x3+1)*(x4+1)0 v9 m/ |5 U$ D- E' B
: h( l$ F8 k( h' j7 K* W/ j
结果:45360/ Q4 ~7 N/ r- L+ c- F* E
$ K0 i! A8 a1 J" u* v9 I% k代码:6 ^( x6 l; j5 f. ]" A1 j
# q; l6 o7 Y1 M/ F7 z! g& f8 j#include<bits/stdc++.h>
- l! B- p5 d4 V#define mem(a,b) memset(a,b,sizeof(a))
4 H1 c+ Q) H3 X5 g# xusing namespace std;! I6 [4 ], X# K( Z; y
typedef long long ll;
6 V0 Y% s0 K1 N: N5 Yconst int inf = 0x3f3f3f3f;& j: q( m6 |( ]! W
const int maxn = 3e5+55555;% C+ N! L: T- S$ a
const ll mod = 998244353;
3 q0 @: E6 q2 W' T `% j& _! O7 z: a" oconst double eps = 1e-7;
' X5 b/ }! b6 w9 @8 A! b) M4 V, v& |& A( h
bool vis[123456];
! ^6 k4 o/ n+ g9 P$ T* O/ xvector<int>prime;
5 V C. X6 J' n! o2 m. |, h6 i2 q! K- u: v
void init() { //素数筛
$ S, M1 O2 V5 P& X2 ~ for(int i = 2;i<= 30000;i++) {
# l$ G% V+ e: R7 j8 @ if(!vis) {
7 }) E k+ K( A for(int j = i*i;j<= 30000;j+= i) {
- Z s' |" J0 s, N2 f0 c2 G vis[j] = true;
* ?9 _6 K _- e! c }+ ? U$ ]& Q) ?7 Z9 e
}! N) i8 J% o/ s6 J, @
}
/ r/ N( _: s' L8 R for(int i = 2;i<= 2019;i++) {
4 r, j7 b. }5 e, B7 M4 P" T if(!vis) prime.push_back(i);
; t, ?3 b2 n' J# |6 T3 C& d- R( @( P }/ _, o( g8 j% [
return ;' n& t( c0 k. Q$ A3 r8 {4 b& u
} H, y, Y! @6 b, `
4 J0 p9 k+ S9 f: O1 Rint cal(int x) { 6 }8 i& T5 `3 _1 |
int num[123];. J5 ~ o6 j& v1 ?
mem(num,0);. ^& w; ^6 K9 B. ~" } }, p
$ Q+ a/ q8 F- d% r% w int k = prime.size(),cnt = 0;
' W2 D' Q; g1 a# _! s4 O. G1 G2 Q for(int i = 0;i< k;i++) { // 分解素因子; q! b6 }4 s4 v* T
if(x%prime == 0) {
$ ^0 U# z4 B( s |% o cnt++;, ^! T4 v0 Z( G! r8 @$ `1 I- D
while(x%prime == 0) {
7 A# i; A0 q/ r' s- j x/= prime;0 p8 j# q: q2 K+ S- C" d% t( D7 x
num[cnt]++;, i) O+ Z2 H5 k3 @8 l M: F
}
4 [3 d7 T2 ]* w) O; b }
/ r; q( X9 o, t }+ L! _; \: ~/ m. q2 k+ R' g' v
int ans = 1;* Z9 Y- T* k5 I* S& {7 V
for(int i = 1;i<= cnt;i++) { //计算因子总数& V i" o e) P& ?; R2 R2 D
ans*= (num+1);0 H+ F; S: S( f$ A; l N/ k
}2 j3 ^$ Y# r- L8 o+ S8 p9 |1 ^
return ans;
: ?; c6 K2 R1 L8 g7 F: ]( Z6 R}
' k& D3 d# l/ I" T' E( x2 b. S" n$ T. C) y7 r
int main() {% o% v0 u m2 d F
init();
- W h" M7 S( h- L for(int i = 99;i<= 1000000;i++) {; J9 \" N- g i3 h0 u# `
if(cal(i) == 100) {; s1 V7 |: u' e. v9 H5 K/ C7 D
cout<<i<<endl;( Z% O% z; w k3 o8 _/ Y4 e
break;
" \9 L i& F* _3 I8 t }! s! L: l$ p: {" Y& T
}
& y. b5 Z0 p. d: E$ ?1 e
" Z! s# }& Z- E return 0;2 B5 E+ c* A/ H% x$ K! q0 a2 X
}, M( Q, E K& \7 ]% d) ^9 u8 g
---------------------
: o, x4 O( o9 K U, v! q1 b作者:nka_kun % |* f# _# Y: h$ b
来源:CSDN
[6 T/ h' B- j
! x; z* m6 g- V- f" ` `4 d/ i) X2 _- e r, o0 O. R( ]
" c) f) L9 n# i! l+ U |
zan
|