全部评论
public static long getResult(long n){
long time = 5L;
long muti = 1L;
long sum = 0L;
while(n > 0){
sum = time * muti;
n -= sum;
muti *= 2;
}
return n + sum;
}
这样么?
送花
回复
分享
送花
回复
分享
![](https://uploadfiles.nowcoder.com/files/20220119/173362216_1642580216028/63_1535707175842_2.png)
网易互娱
校招火热招聘中
官网直投
坑爹无法切换,我卡在这题了
送花
回复
分享
这个不是一个挺简单的等比数列吗。。。
送花
回复
分享
我也卡住了,难受
送花
回复
分享
蹲贴
送花
回复
分享
1.求出N属于哪一个周期 2.n-上一个周期的末尾结点 即可。 例如 n=15属于第二周期。上一个周期末尾结点是5。15-5=10
送花
回复
分享
每个周期(ti)内的个数分别为5,10,20,40,也就是说每个周期的个数是5*(2^(t-1)),那么前t项的和为5*(2t-1),所以只要确定n在哪一项就好了
送花
回复
分享
public static void main(String[] args) { System.out.println(get(15)); } public static long get(long n){ Map<long> map=new HashMap<>(); int chen=5; long num=1L; for (int i = 1; i <= 3; i++) { for (int j=1; j <= chen;j++){ map.put(num,j); num++; } chen=chen*2; } return map.get(n); }</long>
送花
回复
分享
相关推荐