zoukankan      html  css  js  c++  java
  • UVa 1363

    链接:

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4109

    题意:

    输入正整数n和k(1≤n,k≤1e9),计算sum(k mod i)(1≤i≤n)。

    分析:

    被除数固定,除数逐次加1,直观上余数也应该有规律。假设k/i的整数部分等于d,则k mod i = k-i*d。
    因为k/(i+1)和k/i差别不大,如果k/(i+1)的整数部分也等于d,
    则k mod (i+1) = k - (i+1)*d = k-i*d - d = k mod i - d。
    换句话说,如果对于某一个区间i, i+1, i+2,…, j,
    k除以它们的商的整数部分都相同,则k除以它们的余数会是一个等差数列。
    这样,可以枚举d并把相应的等差数列之和累加到答案中,再简单讨论一下其他情况即可。

    代码:

     1 import java.io.*;
     2 import java.util.*;
     3 import static java.lang.Math.*;
     4 
     5 public class Main {
     6     Scanner cin = new Scanner(new BufferedInputStream(System.in));
     7     
     8     void MAIN() {
     9         while(cin.hasNext()) {
    10             long n = cin.nextLong();
    11             long k = cin.nextLong();
    12             long d = 1, ans = max(n-k,0)*k;
    13             for(; d * d <= k; d++) {
    14                 long R = min(n, k/d);
    15                 long L = k / (d+1) + 1;
    16                 if(L > R) continue;
    17                 ans += (k%R + k%L) * (R-L+1) / 2;
    18             }
    19             for(d = min(n,k/d); d >= 1; d--) ans += k%d;
    20             System.out.println(ans);
    21         }
    22     }
    23     
    24     public static void main(String args[]) { new Main().MAIN(); }
    25 }
  • 相关阅读:
    通用sqlserver分页存储过程
    JSONP解决跨域请求
    laravle框架
    XML作用
    mysql 中的常用查询
    smarty模板技术
    Cookie和Session 会话技术
    正则表达式
    Mongodb常用知识点
    PHP之PDO
  • 原文地址:https://www.cnblogs.com/hkxy125/p/9637398.html
Copyright © 2011-2022 走看看