首页 > 其他分享 >Codeforces Round #292 (Div. 2) C. Drazil and Factorial(思维)

Codeforces Round #292 (Div. 2) C. Drazil and Factorial(思维)

时间:2022-08-23 11:57:49浏览次数:90  
标签:cin Factorial 素数 Codeforces int Drazil 拆解

https://codeforces.com/contest/515

题目大意:

给我们一个长度为n的数字a

定义F(a)=a里面每一位数的阶层总乘积

让我们求最大的x,需要满足F(x)=f(a)并且x中没有0和1

input
4
1234
output
33222
input
3
555
output
555

这个题目挺有意思的,虽然vp的时候写出来了,但是还是很想记录一下

  • 关于阶层互换,我们可以看到,纯素数时只能由它自己替换他自己,但是比素数大的其他部分就可以用非素数进行替代

  • 进行拆解的时候需要注意,拆解的较大的数字时,比如3,其实它内部还包含了一个2,所以前面必须同时划掉一个2

  • 再看一个例子,当要拆解9的时候,前面最挨近它的素数就是7,所以前面的7!就用这个7来替代,面对8 * 9时,8可以分成2!* 2!* 2!,但是9=3 * 3,总和8和9就是2!* 3!* 3!

详情可以根据上图和代码模拟

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N=200200,M=2002;
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    int T=1;
    //cin>>T;
    while(T--)
    {
        int n;
        cin>>n;
        string s;
        cin>>s;
        map<int,int> mp;
        for(int i=0;i<n;i++)
        {
            if(s[i]=='0'||s[i]=='1') ;
            else if(s[i]=='2') mp[2]++;
            else if(s[i]=='3') mp[3]++;
            else if(s[i]=='4')
            {
                mp[2]+=2;
                mp[3]++;
            }
            else if(s[i]=='5') mp[5]++;
            else if(s[i]=='6')
            {
                mp[5]++;
                mp[3]++;
            }
            else if(s[i]=='7') mp[7]++;
            else if(s[i]=='8')
            {
                mp[2]+=3;
                mp[7]++;
            }
            else if(s[i]=='9')
            {
                mp[2]++;
                mp[3]+=2;
                mp[7]++;
            }
        }
        for(int i=9;i>=2;i--)
        {
            while(mp[i]>0)
            {
                cout<<i;
                mp[i]--;
            }
        }
        cout<<endl;
    }
    return 0;
}

标签:cin,Factorial,素数,Codeforces,int,Drazil,拆解
From: https://www.cnblogs.com/Vivian-0918/p/16615652.html

相关文章

  • Codeforces Round #638 (Div. 2) B. Phoenix and Beauty(构造/思维)
    https://codeforces.com/contest/1348/problem/B如果一个数组的所有长度为k的子数组的和相同,那么这个数组就是美丽的。数组的子数组是任何连续元素的序列。Phoenix目前......
  • *Codeforces Round #363 (Div. 1) A. Vacations(状态机)
    https://codeforces.com/contest/698/problem/AVasya有n天假期!Vasya知道关于这n天中每一天的以下信息:那家健身房是否开门,以及那天是否在互联网中进行了比赛。第i天有四个......
  • CodeForces-1715D 2+ doors
    2+doors贪心位与位之间互不一向,因此考虑每个位进行考虑就行因为是或的关系,先考虑\(0\)的情况,如果出现\(0\),则两个数字的该位必然是\(0\)如果是\(1\)的情况,就考......
  • CodeForces-1715C Monoblock
    Monoblockdp先想想如何计算初始值\(dp[x]\)表示以第\(x\)个位置为\(r\),他的所有贡献状态转移:如果\(a_x=a_{x-1}\):\(dp[x]=dp[x-1]+1\),代表只增加了\(l......
  • CodeForces-1719D Burenka and Traditions
    BurenkaandTraditions贪心由于代价是向上取整的,因此可以直接考虑成两种方式:选择两个相邻的数,让他们同时异或上一个值选择一个数字,让他变成\(0\)由此可见,最多......
  • Codeforces Round #743 (Div. 2) B. Swaps(思维)
    https://codeforces.com/contest/1573/problem/B给定两个长度为n的数组,数组a和数组b数组a包含从1到2*n的任意顺序的奇数,数组b包含从1到2*n的任意偶数可执行的操作如下:......
  • Codeforces 1715E - Long Way Home
    又是废掉的一个div2啊第一次在学校熬夜打cf,开心还看到了自己最喜欢的斜率优化ohhh链接:E-LongWayHome看到那个平方就可以靠感觉认为是斜率优化了....感觉似不似......
  • Codeforces Round #816 (Div. 2)
    题面A.Crossmarket不妨设\(n\gem\),则答案为\(n+2(m-1)\)。特别地,\(n=1,m=1\)时答案为\(0\),注意特判。ViewCode#include<stdio.h>#include<algorithm>int......
  • [Codeforces Round #816 (Div. 2)] D. 2+ doors
    这次Div.2比之前我打的有些要难啊,前三道题就耗了好多时间,D题干脆摆烂了。。。还是太逊了对于一个\(x\),有\(x|y_i=z_i\),那么我们设\(num[x]=z_1\)&\(z_2\)&\(z_3\)..........
  • 【长期】板刷Codeforces 1500-1700 的构造题
    【长期】板刷Codeforces1500-1700的构造题https://codeforces.com/problemset/page/1?tags=constructive+algorithms%2C1500-1700&order=BY_RATING_ASC每天三道,记录一......