首页 > 其他分享 >题解:AT_iroha2019_day1_f Head of The Dragon

题解:AT_iroha2019_day1_f Head of The Dragon

时间:2024-08-19 12:28:37浏览次数:16  
标签:Head int 题解 long Dragon 分解 质因数

题目大意

得知 \(n\) 和 \(k\) ,求出 \(n\) 是否能分解出 \(k\) 个因数相乘,输出按字典序最小一种情况。

步骤

  1. 将 \(n\) 分解质因数。
  2. 判断质因数个数是大于 \(k\),否则输出 \(-1\) 。
  3. 按照分解出来的质因数从小到大输出。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, k, sum = 1;
int v[105];
signed main() {
	cin.tie(0), cout.tie(0);
	cin >> n >> k;
	int cnt = 0, w = n;//cnt 记录因数个数,n 要被分解,用另一个变量存储原来的值
	for (int i = 2; i <= sqrt(w); i++) { //从 2 到 sqrt(n)
		if (cnt == k - 1 && n != 1) {//特判最后一个因数
			v[++cnt] = n;
			break;
		}
		while (n % i == 0) {
			if (cnt == k - 1 && n != 1) {//特判最后一个因数
				v[++cnt] = n;
				break;
			}
			n /= i;
			v[++cnt] = i;//记录因数
		}
	}
	if (cnt < k)	cout << -1;//因数个数不足 k ,输出 -1
	else {//输出
		for (int i = 1; i <= k; i++)
			cout << v[i] << " ";
	}


}

标签:Head,int,题解,long,Dragon,分解,质因数
From: https://www.cnblogs.com/ggc114514/p/18367066

相关文章

  • Big Clique Everywhere 题解
    给个链接:BigCliqueEverywhere。先说一下团(clique)是什么,其实就是完全图。考虑什么情况下不满足题意。我们可以先建出补图,下面的东西都在补图中完成。我们首先给出结论:如果该图中有奇环(不是二分图),则条件不成立,否则成立。这里证明一下:如果存在奇环,则把点集设为这个奇环中的点,那......
  • 题解:AT_abc367_c [ABC367C] Enumerate Sequences
    大致题意让你按照字典序输出一些长\(n\)的序列,序列中的数字有范围,且序列和需要为\(k\)。分析直接深搜。搜索的时候对从第一个元素开始,每个元素从小到大枚举所有可能的值,这样就保证答案按照字典序升序排列。用一个vector存储序列,到达边界之后计算一遍和,判断是否满足条件,然......
  • 2024百度之星决赛部分题解(难度排序前六题)
    前言手速6题,可惜第四题磨了几个小时没磨出来,多做一题就金了,还是实力差了点,最后银牌前列。下面的题解是根据代码回忆大概的题意,主要是给出来赛时的参考代码A.状压题意:学校集训队总的有\(n\)个人,保证\(n\)是3的倍数,每个人有个人实力\(a_i\),每两个人之间有配合程度\(b_{i......
  • 洛谷P1983 [NOIP2013 普及组] 车站分级 题解
    思路由题可知,在一趟车次的区间内,停靠的站点的等级恒大于不停靠的站点。因此,对于每一趟车次的区间,给所有停靠的站点向所有不停靠的站点两两连有向边,然后求图中最长的路径长度,就能得到答案。实现因为可能出现重边,而且\(n\le1000\),所以在处理车次连边的时候使用邻接矩阵,再改成邻......
  • P10660 BZOJ2759 一个动态树好题 题解
    从题目名字看出此题需要用动态树解决对于任意\(i\),都有唯一的\(p_i\)与之对应,由\(p_i\)向\(i\)连边,\(n\)种关系显然构成一基环树森林。对于环上的节点,一个点可以自己表示自己,所以可以直接解出该点的权值,其他点从环上的点直接推出即可。考虑如何动态维护这个过程,一个点上......
  • 洛谷P1001题解
    洛谷P1001题解友情提示:“题目传送门”被贴在了题目编号上,请自行点击查看!主要知识点C/C++语言框架基本数据类型的定义与使用cin/cout或scanf()/prinf()的使用代码一小步,OI一大步(bushi)AC代码#include<bits/stdc++.h>typedeflonglongll; //“十年OI一场空,不开long......
  • 题解:CF1630F Making It Bipartite
    题意图上有\(n\)个点,且具有点权,点权保证互不相同,若两个点点权有倍数关系,则两点之间有一边,问你最少删去多少个点能使图变为二分图。思路因为如果\(a\)是\(c\)的倍数且\(c\)是\(b\)的个数,所以\(a\)是\(c\)的倍数。由此可以看出,若\(a\)与\(b\)相连且\(b\)与......
  • 题解:CF1034B Little C Loves 3 II
    思路看到这道题时,第一思路就是网络流,结果一看数据\(10^{9}\)直接转向找规律。主要思路:神秘特判。首先,下面的结论基于\(n\lem\)。Case1.当\(n=1\)时,易得的是我们可以以\(6\)为循环节构造。Case2.当\(n=2\)时,我们可以构造出\(4a,5a,6a\)的形式。易得,通过裴蜀......
  • ABC 367 G 题解
    ABC367G神奇题目场上想到了引入多元生成函数之后就嗝屁了。定义两个多项式的运算\(A(z)*B(z)=\sum_{i}\sum_{j}z^{i\oplusj}a_ib_j\),也就是异或卷积。定义两个二元生成函数\(A(x,y)*B(x,y)=\sum_{i,p}\sum_{j,q}x^{i\oplusj}y^{p+q}a_{i,p}b_{j,q}\)我们仍然选用\(\prod......
  • 题解:AT_abc367_d [ABC367D] Pedometer
    首先肯定要单层循环枚举元素,然后想方法求出一个元素的所有答案。一开始我写了一个二分找\(m\)倍数的方法,发现\(m\)小的时候还不如暴力。于是联想到之前做过的一道题,可以借助于取模的前缀和数组。对于当前元素\(i\),如果一个元素之前的前缀和与\(i\)之前的前缀和对\(m\)......