题目描述
一个整数n,问n是否恰好有三个正除数。
思路简单
数据量只有10^4,直接枚举(1~n)的所有数,用n除一下判断是否可以整除即可。时间复杂度O(n)
Code
defisThree(self,n:int)-bool:cnt=0foriinrange(1,n+1):ifn%i==0:cnt+=1returncnt==3
题目描述
题目比较长,但是不复杂。给出一个整数数组milestones,milestones的下标i表示第i个项目,对应的值v表示该项目i分为v个阶段。
1、每周必须且只能完成某一个项目的某一个阶段任务。
2、不可以在相邻的两周完成同一个项目中的任务。
3、当所有项目都完成,或者仅剩下的任务都会导致违反上面的规则的时候将会停止工作。
问题是在不违反规则的情况下能工作多少周。
思路简单
该题有点类似插空法的应用场景,因此不难。我们以其中阶段最多的那个任务为基准,将剩余的任务插进阶段最多的任务m中。
这样会产生两种情况:
第一种情况m的阶段数不大于其他所有任务tmp的阶段数,那么就可以把tmp的所有阶段全插到m中,因此可以工作的周数就等于m+tmp;
反之,就不能把tmp全插到m中,也就是说m的一个空插入一个tmp的阶段,那么最终就是插入两个tmp的阶段后再插入一个m的阶段,因此可以工作的周数就是2*tmp+1。
Code
defnumberOfWeeks(self,milestones:List[int])-int:m=max(milestones)tmp=sum(milestones)-mreturnm+tmpifm=tmpelse2*tmp+1
题目描述
给出一个二维网格,每个坐标上都有一颗苹果树,其中树上的苹果个数为横坐标绝对值加上纵坐标绝对值。给出一个整数neededApples,在必须有need数量的苹果在土地上的时候,土地的最小周长。(边长为1的正方形是没有任何苹果的)
分析一下
土地的圈数n每增加1,边长就会增加2,因为上下界都增加了1。通过下面的推导我们知道了,第n圈会有12*(n^2)个苹果。然后把(1~n)的每圈都加起来就可以求出n圈里总共的苹果,然后一直循环直到苹果数达到neededApples就行了。n对应边长为一个边2n,总共有4个边,那么n的周长就是8n。
Code
defminimumPerimeter(self,neededApples:int)-int:apples=0n=0#这里也可以用二分来寻找边界#下界为边长1,上界为边长1e5,#当边长超过1e5时候苹果数会比超出数据范围10^15whileapplesneededApples:apples=2*n*(n+1)*(2*n+1)n+=1#注意边长为1没有苹果。return8*(n-1)预览时标签不可点收录于话题#个上一篇下一篇
本文编辑:佚名
转载请注明出地址 http://www.jiubiyinga.com/xwgj/12885.html