首页 > 其他分享 >可爱捏

可爱捏

时间:2024-11-15 16:43:04浏览次数:1  
标签:le int 质数 sqrt 等于 质因数 可爱

可爱捏

题意

给出 \(n\) 个整数 \(a_i(1\le i\le n)\)。

求最多选出多少个数,使她们两两的乘积不为完全立方数。

\(n\le 10^5,a_i \le 10^5\)。

思路

可以先将 \(a_i\) 分解质因数,将所有指数 \(\bmod 3\),两个数相乘为完全平方数即对应指数相加等于 \(3\)。

由此可知对于每个数,和她相乘等于完全立方数的数是唯一确定的。

如果我们能求出指数 \(\bmod 3\) 后的值和对应的数,就能简单的算出答案。

发现每对数之间互相独立,只需要选择数量多的一个即可。

但 \(O(n\sqrt V)\) 的时间去分解质因数会 TLE,考虑优化。

由于我们求的是指数 \(\bmod 3\) 后的数,只有小于等于 \(\sqrt[3]{V}\) 的质因数的指数才有可能大于等于 \(3\),

我们只需要暴力求出小于等于 \(\sqrt[3]{V}\) 的质因数,其他分类讨论。

记 \(x\) 表示 \(a_i\) 除掉所有小于等于 \(\sqrt[3]{V}\) 的质因数后剩下的数,

我们发现 \(x\) 最多由两个质数组成,用反证法容易证明:

若 \(x=pqr\),根据 \(p,q,r > \sqrt[3]{x}\),有 \(pqr > x\),矛盾。

分类讨论:

  1. \(x=1\);

  2. \(x\) 由两个相同质数组成;

  3. \(x\) 由一个或两个不同质数组成。

乘上对应的数即可。

时间复杂度:\(O(n\sqrt[3]{V}+n\log n)\)。

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5;
int n, s[N], ans;
map <int, int> cnt, ne;
set <int> used;
vector <int> _;
signed main() {
	freopen("lovely.in", "r", stdin);
	freopen("lovely.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i ++) cin >> s[i];
	for (int i = 1, c; i <= n; i ++) {
		int x = 1, y = 1, t = s[i]; // x;指数 mod 3 后的数 y:x对应的数
		for (int j = 2; j * j * j <= s[i]; j ++) { // 暴力分解
			for (c = 0; t % j == 0; t /= j, c = (c + 1) % 3);
			for (int k = 1; c && k <= c; k ++) x *= j;
			for (int k = 1; c && k <= 3 - c; k ++) y *= j;
		}
		if ((int)sqrt(t) * (int)sqrt(t) == t) y *= sqrt(t); // 分类讨论
		else y *= t * t;
		x *= t, cnt[x] ++, ne[x] = y, _.push_back(x);
	}
	for (auto x : _) {
		if (x == 1) continue;
		if (used.count(x) || used.count(ne[x])) continue;
		ans += max(cnt[x], cnt[ne[x]]); // x 和 x 对应的数只能取一个 个数较大的
		used.insert(x); used.insert(ne[x]);
	}
	cout << ans + (cnt[1] > 0) << "\n";
	return 0;
}

标签:le,int,质数,sqrt,等于,质因数,可爱
From: https://www.cnblogs.com/maniubi/p/18548230

相关文章

  • 小可爱们!你们要的HTML的css网页美化之背景设置教程来啦!看完让你秒变css背景界大佬,全是
    CSS背景文章目录CSS背景背景颜色实例实例背景图像实例实例背景图像-水平或垂直平铺实例实例背景图像-设置定位与不平铺实例实例背景-简写属性实例CSS背景属性CSS背景属性用于定义HTML元素的背景。CSS属性定义背景效果:background-colorbackground-imag......
  • 小可爱们!你们要的css网页美化知识ta来了和你们相见啦!
    CSS知识介绍文章目录CSS知识介绍1.基本概念1.1什么是CSS?1.2CSS的作用2.主要特点2.1层叠性2.2继承性2.3选择器3.语法3.1基本语法4.常用属性4.1文本和字体4.2盒模型4.3背景4.4显示和定位5.布局方式5.1浮动布局5.2Flexbox布局5.3Grid布局6.响......
  • Kimi+豆包,萌宠表情包5分钟轻松制作,可爱萌化了,还愁流量吗?
    大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300+款以上的AI应用工具。关注科技及大模型领域对社会的影响10年+。关注我一起驾驭AI工具,拥抱AI时代的到来。AI工具集1:大厂AI工具【共23款】,一次性奉上,今天是百度和阿里AI工具集2:大厂AI工具【共12款】,......
  • 题解 QOJ5034【>.<】/ BC2401D【可爱路径】
    必可赛前公益众筹赛第一试Dhttps://qoj.ac/problem/5034,2022-2023集训队互测Round6(Nov12,2022)题目描述这原本是一道简单的最短路问题,但是由于种种地域文化,宗教信仰以及政治因素,原来一些或许可以行走的路径不能通行了。我们定义禁止路径为连续的经过一些特定的点的......
  • 【日记】我倒是想穿可爱的 JK 小裙子,可惜我是哥布林……(704 字)
    正文中午给三盆植物换水,惊叹于文竹的根。长得之长,都能在花盆里盘几圈了。而且我好像有一段时间没换水了,花盆的水中和盆底有了些绿藻。虽然不知道好不好,但我还是清掉了,摸起来黏黏的。而且我也总是觉得单位的水,摸起来油油的。看了一眼淘宝,还是觉得那个JK格裙好便宜,也好......
  • Monsters Pack 04(游戏卡通可爱怪兽怪物战士模型)
    以下模型有3种进化形态:捕手战士鱼卫战士骑士战士小鬼战士猴东战士无鼻战士坑娃战士刺头战士树斯特战士楔形战士这些模型是为您的主要角色设计的敌人。进化的每个阶段都会使他变得更加强大,因此您可以用它来增强对手的实力,并作为敌人的boss。它适用于不同类型的游戏......
  • Airtest-Selenium实操小课③:下载可爱猫猫图片
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途1.前言上次实操小课分享,我们分享了如何使用Airtest-selenium实现自动化刷B站,还没看的同学可以戳这里回顾一下~那么这周我们看看如何实现使用Airtest-Selenium实......
  • AI绘画| 迪士尼风格|可爱头像【附Midjourney提示词】
    Midjourney案例分享图片预览迪士尼风格|可爱头像高清原图及关键词Prompt已经放在文末网盘,需要的自取在数字艺术的新时代,人工智能绘画已经迅速崭露头角。作为最先进的技术之一,AI绘画结合了艺术和科学,开启了一片全新的视觉探索领域。本篇文章将深入介绍AI绘画的迪士尼风格可爱......
  • AI绘画StableDiffusion实操教程:可爱头像奶茶小女孩(附高清图片)
    本教程收集于:AIGC从入门到精通教程汇总今天继续分享AI绘画实操教程,如何用lora包生成超可爱头像奶茶小女孩放大高清图已放到教程包内,需要的可以自取。欢迎来到我们这篇特别的文章——《AI绘画StableDiffusion实操教程:可爱头像奶茶小女孩》。在这篇文章中,我们将一步步教你如何利......
  • 可爱小猫猫【InsCode Stable Diffusion美图活动一期】
    一、StableDiffusion模型在线使用地址:https://inscode.csdn.net/@inscode/Stable-Diffusion二、模型版本及相关配置:模型:chilloutmix_NiPrunedFp32fixLora:cat_20230627113759采样迭代步数(steps):32采样方法(Sampler):DPM++2MKarras提示词相关性(CFGScale):7三、图......