网易第二题为啥就AC30%,求助

public class NetEase2018Spring_1 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        int sum = 0;
        for (int y = k + 1; y <= n; y++) {
            sum = sum + (y - k) * (n / y);//y-k表示一轮有多少个x可以匹配,例如y=4,k=2时,n=10,x能匹配的就是2,3,2+4,3+4,2+4+4
            if (n % y != 0 && k + y * (n / y) <= n) {
                sum = sum + n - (k + y * (n / y)) + 1;
            }
        }     }
}
下面是我用暴力进行的验证,发现都能过,n=10000时,暴力超时了,也就不能验证。就这样也才过了30%,不知道有没有大佬分享代码让我验证一下。
#笔试题目##面经#
全部评论
有一点小细节和你不太一样,你所有的n / y,我都是(n + 1) / y
点赞 回复 分享
发布于 2018-03-28 09:23
用了long才过了20%,没想到对3取余
点赞 回复 分享
发布于 2018-03-28 09:13
我擦,要用long啊,调试了半天感觉都没有问题,只有30
点赞 回复 分享
发布于 2018-03-28 08:54
其他都能理解 就想问问这个+1是什么意思呢 我第一次写的时候就少了1
点赞 回复 分享
发布于 2018-03-28 01:48
每次加上一个数对3取余就行了,用int会爆,用long全过了
点赞 回复 分享
发布于 2018-03-27 21:54

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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