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 }
    代码
  • 相关阅读:
    git 无法提交到远程服务器【转载】
    vscode 常用快捷键
    mongodb nodejs一个有自增id的功能
    C++ lambda表达式与函数对象
    TypeScript的async, await, promise,多参数的调用比较(第2篇)
    了解TypeScript的async,await,promise(第1篇)
    TyepScript判断一个变量是null, or undefined
    MongoClient 对 Mongodb的 增删改查 操作
    TypeScript第一个Promise程序
    C++基类的继承和多态
  • 原文地址:https://www.cnblogs.com/wyher/p/9826714.html
Copyright © 2011-2022 走看看