BitTigerio 2018-03-10
【链接】我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
用小的质数去凑那个数字。
显然比用大质数去凑划算。
因为
对于\(x = p1^{q1}*p2^{q2}*...*pn^{qn}\)
x的因子个数等于(q1+1)(q2+1)....(qn+1);
显然 你用的质数越小。
这个指数就能更大一点。
(表示相同的数字的情况下。至少不会更差。
根据这个。
又有235....2329>2*10^9
则只要考虑这10个质数就可以了。
枚举它们用了多少个。
(即枚举各个质数的指数
(找出最优解就好。
【代码】
#include <bits/stdc++.h> #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--) #define all(x) x.begin(),x.end() #define pb push_back #define ls l,mid,rt<<1 #define rs mid+1,r,rt<<1 using namespace std; const double pi = acos(-1); const int dx[4] = {0,0,1,-1}; const int dy[4] = {1,-1,0,0}; const int a[11] = {1,2,3,5,7,11,13,17,19,23,29}; LL n; LL ansnum=-1,ansyueshu; void dfs(LL cur,LL idx,LL cnt,LL yueshu){ if (idx>10) return; //超过范围结束。 //cur大于n了,那么结束 if (cur>n) return; if (ansnum==-1){ ansnum = cur; ansyueshu = yueshu; }else{ if (yueshu>ansyueshu){ ansnum = cur; ansyueshu = yueshu; }else if (yueshu==ansyueshu){ if (cur<ansnum){ ansnum = cur; ansyueshu = yueshu; } } } //还是选择这个数字继续乘。 dfs(cur*a[idx],idx,cnt+1,yueshu/(cnt+1)*(cnt+2)); //选择下一个数字乘。 dfs(cur,idx+1,0,yueshu); } int main(){ #ifdef LOCAL_DEFINE freopen("rush_in.txt", "r", stdin); #endif scanf("%lld",&n); //当前数字,当前选择的是第几个数字,这个数字乘了几次,约数个数 dfs(1,1,0,1); printf("%lld\n",ansnum); return 0; }
使用 CSS3,网页设计师可以使用他/她喜欢的任何字体。只需简单的将字体文件包含在网站中,它会自动下载给需要的用户。在新的 @font-face 规则中,您必须首先定义字体的名称,然后指向该字体文件。