zoukankan      html  css  js  c++  java
  • 无题---------------构造函数

    题目描述

    Bob 得到了 Alice 的礼物后十分开心,研究了更多数字。Bob 觉得一个数字 x 是优美的,当且仅当存在一个正整数 a 和一个 > 1 的正整数 b,使得 x = a^b

    Bob 没事的时候就喜欢数这些优美的数字,然而 Bob 的计算能力有限,如果数字太大就算不出来了。现在他想让你帮他算出 1 到 N 中有多少个数是优美的。

    输入输出格式

    输入格式:

    一行一个正整数 N,如题面所述。

    输出格式:

    一行一个整数 ans,表示 11 到 N 中优美的数的个数。

    输入输出样例

    输入样例#1:
    10
    输出样例#1:
    4

    说明

    1010 以内的优美得数有 1, 4, 8, 9。

    对于 30% 的数据满足 1  N  105

    对于 70% 的数据满足 1  N  1010

    对于 100% 的数据满足 1  N  1018


    100分做法:

      1. 对于每个有贡献的 x ,我们考虑如何用唯一的形式表示它,方式有很多种。

        2. 对于一个有贡献的 x ,我们用所有 x = a Λ b 中使得 b 最大的一种形式来表示它来表示它。

        3. 定义函数 g(b)表示有多少 x 能被表示为 a Λ b。函数 f (b)表示有多少 x 能被表示为 a Λ b ,且 b 满足上述性质。

        4. 显然 f 函数的和即为答案。

        5. g 函数的求法:pow(n , 1 / b)。

        6. f  函数的求法:g(b)-Σ b | i f (i)

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 ll n,f[70],ans;
     5 int main()
     6 {
     7     scanf("%lld",&n);
     8     for(int i=60;i>=2;--i)
     9     {
    10         f[i]=(ll)pow(n,1.0/i)-1;
    11         for(int j=i+i;j<=60;j+=i)
    12             f[i]-=f[j];
    13         ans+=f[i];
    14     }
    15     printf("%lld",ans+1);
    16     return 0;
    17 }
    代码
  • 相关阅读:
    hdu6007 Mr. Panda and Crystal 最短路+完全背包
    ID生成器的一种可扩展实现方案
    使用PUT方法上传文件无法工作原因分析
    负载均衡算法
    父类和子类属性覆盖的各种情况分析
    java functional syntax overview
    Starter Set of Functional Interfaces
    application/xml和text/xml的区别
    mime type 概要介绍
    spring mvc 详细执行流程
  • 原文地址:https://www.cnblogs.com/wyher/p/9826714.html
Copyright © 2011-2022 走看看