【20181031】一串数字【分解质因数+贪心】

题面

【错解】

立方就是所有质因子次数都是3的倍数嘛

发现1e5的三次根很小,可以枚举所有和这个数乘起来是完全立方数的(flag*1)

然后……连条边跑最大独立集?

不对啊是NP问题(实际上是个二分图)

那多半要优化连边变成一棵树(flag*2)

推了0.5h没一点结果,就暴搜,希望能剪点枝(那么大的数据剪个*的枝)

然后……搜挂了!0pts

【正解】

既然只和%3有关,那我们可以分解质因数时直接%掉

这样和一个数配对的数是唯一的

由于有重复的数(%了之后),我们可以把它们合并。如果原来是完全立方,就选一个最大的(不能选多个);否则把所有的加起来

然后每对数贪心选最大的

代码

原文地址:https://www.cnblogs.com/lstoi/p/9884438.html

时间: 2024-10-16 10:04:35

【20181031】一串数字【分解质因数+贪心】的相关文章

POJ 2773 Happy 2006 (分解质因数+容斥+二分 或 欧几里德算法应用)

Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 10309   Accepted: 3566 Description Two positive integers are said to be relatively prime to each other if the Great Common Divisor (GCD) is 1. For instance, 1, 3, 5, 7, 9...are a

【bzoj2795】[Poi2012]A Horrible Poem Hash+分解质因数

题目描述 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. 输入 第一行一个正整数n (n<=500,000),表示S的长度.第二行n个小写英文字母,表示字符串S.第三行一个正整数q (q<=2,000,000),表示询问个数.下面q行每行两个正整数a,b (1<=a<=b<=n),表示询问字符串S[a..b]的最短循环节长度. 输出 依次输出q行正整数,第i行的正整数对应第i

程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)

1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式:当读到的就是素数时,输出它本身. 提示:可以用一个函数来判断某数是否是素数. 输入格式: 一个整数,范围在[2,100000]内. 输出格式: 形如: n=axbxcxd 或 n=n 所有的符号之间都没有空格,x是小

POJ 1091 跳蚤(分解质因数 + 容斥 + 大数)

跳蚤 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8910   Accepted: 2676 Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向

HDU-3189-Just Do It【分解质因数】

3189-Just Do It Problem Description Now we define a function F(x), which means the factors of x. In particular, F(1) = 1,since 1 only has 1 factor 1, F(9) = 3, since 9 has 3 factors 1, 3, 9. Now give you an integer k, please find out the minimum numb

c语言程序设计第6周编程作业一(分解质因数)

分解质因数 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式:当读到的就是素数时,输出它本身. 提示:可以用一个函数来判断某数是否是素数. 输入格式: 一个整数,范围在[2,100000]内. 输出格式: 形如: n=axbxcxd 或 n=n 所有的符号之间都没有空格,x是小写字母x.a

练习十四:分解质因数

分解质因数:把一个合数分解成若干个质因数的乘积形式,即求质因数的过程叫做分解质因数. 要求:将一个正整数分解质因数:例如:输入的数为90,分解为90=2*3*3*5 分析: 1.该数必须不是质数(不能被1和它本身除) 2.如果遇到n能被k整除的情况,则打印出k,同时用n除以k的商,作为新的正整数n,再重复第一步操作 3.如果n不能被k整除时,那么用k+1作为k的值,再来执行第一步操作 方法一:比较笨但是可以实现 1 a = int(input("请输入一个数字:")) 2 list1

【Python】【demo实验17】【练习实例】【将一个正整数分解质因数】

题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 我的源代码: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- # 将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. a = int(input("please input the number:\n")) b = a # a 的因数集合 la = [] l = [] c = int(a*0.5)+2 print("

[CodeForces - 1225D]Power Products 【数论】 【分解质因数】

[CodeForces - 1225D]Power Products [数论] [分解质因数] 题目描述 Time limit 2000 ms Memory limit 524288 kB Source Technocup 2020 - Elimination Round 2 Tags hashing math number theory *1900 Site https://codeforces.com/problemset/problem/1225/D 题面 Example Input 6