zoukankan      html  css  js  c++  java
  • ZOJ 3175 Number of Containers


    ZOJ Problem Set - 3175
    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: 

     
    ZOJ 3175 Number of Containers - qhn999 - 码代码的猿猿

    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
    Author: CAO, Peng
    Contest: The 9th Zhejiang University Programming Contest

    n*(1/1+1/2+1/3+1/4+.........+1/n)-n
    枚举到sqrt(n)×2-重复部分

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cmath>

    using namespace std;

    typedef unsigned long long int uLL;

    int main()
    {
        int T;
        int n;
        uLL ans;
        cin>>T;
    while(T--)
    {
        cin>>n;
        int nt=(int)sqrt(n*1.0);
        ans=0;
        for(int i=1;i<=nt;i++)
        {
            ans+=n/i;
        }

        ans=ans*2-nt*nt;
        ans-=n;
        cout<<ans<<endl;
    }
        return 0;
    }

  • 相关阅读:
    作业17
    模块
    Find the Lost Sock (异或算法)
    CD(二分)
    数字流输入
    最大连续子序列(dp)
    STL学习----lower_bound和upper_bound算法
    输入挂(减少时间)
    暴力之全排列
    【C++】判断元素是否在vector中,对vector去重,两个vector求交集、并集
  • 原文地址:https://www.cnblogs.com/CKboss/p/3350944.html
Copyright © 2011-2022 走看看