zoukankan      html  css  js  c++  java
  • [CF797A] k-Factorization(分解因数,构造)

    题目链接:http://codeforces.com/contest/797/problem/A

    题意:给一个n,一个k。问用k个不是1的数的乘积表示n,能不能表示,能的话输出解。

    把n分解质因数,看看一共有多少质因数。输出前k-1个因数,最后一个数用这个数去除以之前的乘积。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 typedef long long LL;
     5 vector<int> a, p;
     6 int n, k;
     7 
     8 int main() {
     9     // freopen("in", "r", stdin);
    10     while(~scanf("%d%d",&n,&k)) {
    11         int m = n, tot = 0;
    12         a.clear(); p.clear();
    13         for(int i = 2; i * i <= m; i++) {
    14             if(m % i == 0) {
    15                 int cnt = 0;
    16                 while(m % i == 0) {
    17                     m /= i;
    18                     cnt++;
    19                 }
    20                 tot += cnt;
    21                 p.push_back(i);
    22                 a.push_back(cnt);
    23             }
    24         }
    25         if(m != 1) {
    26             tot++;
    27             p.push_back(m);
    28             a.push_back(1);
    29         }
    30         if(tot < k) {
    31             puts("-1");
    32             continue;
    33         }
    34         int tmp = 1;
    35         for(int i = 0; i < p.size(); i++) {
    36             while(a[i] && k - 1) {
    37                 printf("%d ", p[i]);
    38                 tmp *= p[i];
    39                 a[i]--; k--;
    40             }
    41         }
    42         printf("%d
    ", n / tmp);
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    数据库---多表查询练习
    数据库---权限管理
    数据库---表---多表查询
    数据库---数据---单表查询
    软件测试面试题(3)
    windows资源监控
    测试十大原则
    性能测试关心的结果
    软件测试面试题(2)
    软件测试面试题(1)
  • 原文地址:https://www.cnblogs.com/kirai/p/6845494.html
Copyright © 2011-2022 走看看