zoukankan      html  css  js  c++  java
  • ZOJ3175 Number of Containers[数学题]

    Number of Containers

    Time Limit: 1 Second      Memory Limit: 32768 KB

    For two integers m and k, k is said to be a container of m if k is divisible by m. Given 2 positive integers n and m (m < n), the function f(n, m) is defined to be the number of containers of m which are also no greater than n. For example, f(5, 1)=4, f(8, 2)=3, f(7, 3)=1, f(5, 4)=0...

    Let us define another function F(n) by the following equation:

    Now given a positive integer n, you are supposed to calculate the value of F(n).

    Input

    There are multiple test cases. The first line of input contains an integer T(T<=200) indicating the number of test cases. Then T test cases follow.

    Each test case contains a positive integer n (0 < n <= 2000000000) in a single line.

    Output

    For each test case, output the result F(n) in a single line.

    Sample Input

    2
    1
    4
    

    Sample Output

    0
    4
    

    题目就是要我们求:n*(1/1+1/2+1/3+……1/(n-2)+1/(n-1))-n
    由于题目的数据太大,显然暴力是会tle,于是建立如上的图,发现:
    x*y=n这条直线是关于y=x对称,于是
    1+2+1就是结果了。
    能想到根号n就几乎是知道答案了。

    code:
     1 #include<stdio.h>
     2 #include<math.h>
     3 
     4 int main()
     5 {
     6     int t;
     7     scanf("%d",&t);
     8     int n;
     9     while(t--)
    10     {
    11         int i;
    12         int t;
    13         long long sum=0;
    14         scanf("%d",&n);
    15         t=(int)(sqrt(n)+0.000001);
    16         for(i=1;i<=t;i++)
    17             sum+=(n/i);
    18         sum*=2;
    19         sum=sum-t*t-n;
    20         printf("%lld\n",sum);
    21     }
    22     return 0;
    23 }
  • 相关阅读:
    NAT(NAPT)地址转换过程
    关于路由、AP、交换机的小总结
    交换机、集线器、路由器区别和作用
    系统调用与API的区别
    课程设计
    Python学习之format函数的使用
    等边三角形
    Hello 2018
    PyCharm idea clion webstorm phpstorm激活
    Educational Codeforces Round 35 (Rated for Div. 2)(ABC)
  • 原文地址:https://www.cnblogs.com/XBWer/p/2657568.html
Copyright © 2011-2022 走看看