zoukankan      html  css  js  c++  java
  • 【UOJ#82】【UR #7】水题生成器(贪心)

    【UOJ#82】【UR #7】水题生成器(贪心)

    题面

    UOJ

    题解

    (n!)的所有约数搜出来,这个个数不会很多。
    然后从大往小能选则选就好了。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<vector>
    using namespace std;
    #define ll long long
    int n;ll m;
    vector<ll> ys;
    int p[22];
    void Fact(ll x)
    {
    	for(int i=2;i*i<=x;++i)
    		while(x%i==0)p[i]+=1,x/=i;
    	if(x>1)p[x]+=1;
    }
    void dfs(int x,ll S)
    {
    	if(x==n+1){ys.push_back(S);return;}
    	for(ll i=0,t=1;i<=p[x];++i,t*=x)
    		dfs(x+1,S*t);
    }
    int main()
    {
    	scanf("%d%lld",&n,&m);
    	for(int i=2;i<=n;++i)Fact(i);
    	dfs(1,1);
    	sort(ys.begin(),ys.end());
    	reverse(ys.begin(),ys.end());
    	for(ll a:ys)if(m>=a)printf("%lld
    ",a),m-=a;
    	return 0;
    }
    
  • 相关阅读:
    模块
    time/datetime/random/string/os/sys/shutil/zipfile/tarfile
    模块
    模块
    模块
    2.1
    1.4
    生成器 迭代器
    闭包 装饰器
    函数
  • 原文地址:https://www.cnblogs.com/cjyyb/p/11108083.html
Copyright © 2011-2022 走看看