美文网首页
hihocoder62

hihocoder62

作者: GoDeep | 来源:发表于2018-06-03 15:00 被阅读0次

http://hihocoder.com/contest/offers62/problems

题目2 : 被遗忘的整数
2个数直接相乘就是结果,因为n*sum(1/ai)=sum(ai)
如果把约数都排序的话,n乘以第一小约数的倒数等于最大的约数,n乘以第二小约的倒数数等于倒数第二大的约数,所以数组的逆了个序,sum当然一样

题目3 : 金额组合
根据bit位来求,思路是想到了,但是实现的时候遇到点问题
我是想都转换为二进制来求,其实不必,比如

package l623;

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        long c=sc.nextLong();
        long[]a=new long[n];
        for(int i=0;i<n;i++) a[i]=sc.nextLong();
        
        Arrays.sort(a);
        long res=0;
        int k=n-1;
        while(k>=0) {
            while(k>=0 && a[k]>c) k--;
            if(k==-1) break;
            res += (((long)1)<<k);
            c-=a[k];
        }
        System.out.println(res-1);
    }
}

相关文章

  • hihocoder62

    http://hihocoder.com/contest/offers62/problems 题目2 : 被遗忘的...

网友评论

      本文标题:hihocoder62

      本文链接:https://www.haomeiwen.com/subject/qiujsftx.html