CodeForces 797A k-Factorization

xiaoxiao2021-02-27  374

题目链接: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; }
转载请注明原文地址: https://www.6miu.com/read-3741.html

最新回复(0)