#阿里笔试#
7.30笔试

第一题(通过100%):
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.StreamTokenizer;
import java.util.LinkedList;
public class Main{
    public static void main(String[] args) throws IOException {
        StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        String str;
        st.nextToken();
        int k=(int)st.nval;
        st.nextToken();
        long n=(long)st.nval;
        n--;

        LinkedList<Long> stack=new LinkedList<>();
        while (n>0){
            stack.addLast(n%9);
            n/=9;
        }

        long ans=0;
        while(!stack.isEmpty()){
            ans*=10;
            if(stack.peekFirst()>=k){
                ans+=stack.pollFirst()+1;
            } else{
                ans+=stack.pollFirst();
            }
        }

        System.out.println(ans);
    }
}

全部评论
发现好像是return (b[1]-b[0])/(b[1]*(b[1]+1))-(a[1]-a[0])/(a[1]*(a[1]+1)); 这里一直是return 0;因为你这里int除法得到的是0,需要转为float;不过思路很强,已经很厉害了~
点赞 回复 分享
发布于 2021-08-04 11:53
第二题(通过0%,神奇): import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.StreamTokenizer; import java.util.Comparator; import java.util.PriorityQueue; public class Main{ public static void main(String[] args) throws IOException { StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); st.nextToken(); int N=(int)st.nval; while(N-->0){ st.nextToken(); int n=(int)st.nval; st.nextToken(); int m=(int)st.nval; PriorityQueue<int[]> queue=new PriorityQueue<>(new Comparator<int[]>() { @Override public int compare(int[] a, int[] b) { return (b[1]-b[0])/(b[1]*(b[1]+1))-(a[1]-a[0])/(a[1]*(a[1]+1)); } }); for(int i=0;i<n;i++){ st.nextToken(); int a=(int)st.nval; st.nextToken(); int b=(int)st.nval; queue.offer(new int[]{a,b}); } for(int i=0;i<m;i++){ int[] arr = queue.poll(); arr[0]++; arr[1]++; queue.offer(arr); } double ans=0;; while (!queue.isEmpty()){ int[] arr = queue.poll(); ans+=(double)arr[0]/arr[1]; } ans/=n; System.out.println(ans); } } }
点赞 回复 分享
发布于 2021-07-30 21:23

相关推荐

不愿透露姓名的神秘牛友
07-25 17:51
点赞 评论 收藏
分享
06-04 09:27
门头沟学院 Java
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务