CodeForces 797A k-Factorization

来源:互联网 发布:用mac制作win7安装u盘 编辑:程序博客网 时间:2024/05/17 22:58

题目链接:http://codeforces.com/contest/797/problem/A
题意:给你两个整数n,k,让你输出一个长度为k的序列a,所有的a[i]相乘等于n,并且a[i]>1
解析:先打个素数表,然后能拆尽量拆,拆下k-1个,剩下的是拆完以后的n

#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+100;bool is_prime(int n){    if(n<2)        return false;    for(int i=2;i*i<=n;i++)    {        if(n%i==0)            return false;    }    return true;}int prime[maxn];int main(void){    int cnt = 0;    for(int i=0;i<maxn;i++)    {        if(is_prime(i))            prime[cnt++] = i;    }    int n,k;    scanf("%d %d",&n,&k);    vector<int>ans;    for(int i=0;i<cnt;i++)    {        while(n%prime[i]==0)        {            if(k==1)                break;            ans.push_back(prime[i]);            k--;            n/=prime[i];        }        if(k==1)            break;    }    if(n==1 || k>1)        puts("-1");    else    {        for(unsigned i = 0;i<ans.size();i++)            printf("%d ",ans[i]);        printf("%d\n",n);    }    return 0;}
0 0
原创粉丝点击