[Luogu_MayR1 D] 核心密码B

原创 2017年06月06日 12:01:58

题目描述

令g(n)表示n能表示成几种不同的完全k次方数(k>1),求

例如,这里写图片描述,所以g(64)=3。

分析:
1.首先将题目进行转化。转化为枚举底数分别求贡献,则答案就是先枚举一个次数k(2<=k<=log n),再求和这里写图片描述
2.于是我们就可以预处理出前105 项,剩下的每一项用这里写图片描述代替,于是就是要计算这里写图片描述

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=100010;
typedef long double ld;
typedef long long LL;
inline ld Pow(ld x,int y){
    ld ret=1;
    while(y){
        if(y&1) ret=ret*x;
        x=x*x;
        y>>=1;
    }
    return ret;
}
ld sum[maxn][65];
int MAX=100000;
void init(){
    for(int k=2;k<=60;k++){
        int Max=pow(1000000000000000000,1.0/k);
        for(int i=2;i<=MAX;i++){
            sum[i][k]=sum[i-1][k];
            if(i<=Max) sum[i][k]+=1.0/pow(i*1.0,k);
        }
    }
}
ld calc(ld st,ld ed,LL k){
    return ((1.0/Pow(ed,k-1))-(1.0/Pow(st,k-1)))/(1.0-1.0*k);
}
LL n;
ld ans;
int main(){
    init();
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%lld",&n);
        ans=0.0;
        if(n<4){
            printf("0\n");
            continue;
        }
        int k=1;
        for(LL i=4;i<=n;i<<=1){
            k++;
            LL tmp=pow(n,1.0/k);
            if(tmp<=1LL*MAX){
                ans+=sum[tmp][k];continue;
            }
            ans+=sum[MAX][k];
            int st=MAX+1;if(st>tmp) continue;
            ans+=calc(1.0*st-0.5,1.0*tmp+0.5,k);
        }
        printf("%.15lf\n",(double)ans);
    }
    return 0;
}

^_^

版权声明:本文为博主原创文章,未经博主允许不得转载。

【第七届蓝桥杯】密码脱落

题目:密码脱落 X星球的考古学家发现了一批古代留下来的密码。 这些密码是由A、B、C、D 四种植物的种子串成的序列。 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。 由于年代...
  • Honiler
  • Honiler
  • 2017年11月14日 08:09
  • 74

古代密码

古代密码 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索“cqs_2012”即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献; 编...
  • cqs_2012
  • cqs_2012
  • 2014年06月29日 12:14
  • 1094

POJ-2820-古代密码

古罗马帝王有一个包括各种部门的强大政府组织。其中有一个部门就是保密服务部门。为了保险起见,在省与省之间传递的重要文件中的大写字母是加密的。当时最流行的加密方法是替换和重新排列。 替换方法是将所有出现的...
  • hengbao4
  • hengbao4
  • 2015年06月19日 16:49
  • 1052

2016蓝桥杯省赛java C组第十题 --密码脱落

暑假以来刷蓝桥杯题,实在被暴力所折服,终于碰到一眼前一亮的题~~~ 第一篇在线的博客,开写~~~ 密码脱落 X星球的考古学家发现了一批古代留下来的密码。 这些密码是由A、B、C、D 四种植物的种子...
  • wang_cc_
  • wang_cc_
  • 2017年07月30日 19:13
  • 152

16蓝桥杯--JAVA语言C组-第10题-密码脱落

前言:由于网上没有找到比较满意的Java答案,只找到了一个不错的c语言的答案。自己修改成Java代码的。 博主链接:http://blog.csdn.net/f_zyj/article/detai...
  • Silentnewborn
  • Silentnewborn
  • 2017年03月15日 15:52
  • 377

密码脱落

/** *10. 密码脱落 *X星球的考古学家发现了一批古代留下来的密码。 *这些密码是由A、B、C、D 四种植物的种子串成的序列。 *仔细分析发现,这些密码串当初应该是前后对称的(也就是我们...
  • xiaoping0915
  • xiaoping0915
  • 2016年04月18日 08:24
  • 3248

while(~scanf("%d%d",&a,&b))的含义

while(~scanf("%d %d",&a,&b))和while(scanf("%d %d",&a,&b)!=EOF) #include int main() {    int a,b...
  • liluo_2951121599
  • liluo_2951121599
  • 2017年11月21日 17:44
  • 282

win7 64位 SEC S3C2410X Test B/D安装

具体下载路径见:http://download.csdn.net/detail/projectaker/9112953
  • Projectaker
  • Projectaker
  • 2015年09月16日 23:28
  • 1714

给你一个:驱动程序A,数据源名称为B,用户名称为C,密码为D,数据库表为T,请用JDBC检索出表T的所有数据

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq...
  • Thanosisme
  • Thanosisme
  • 2016年07月29日 11:39
  • 1394

有A、B、C、D四个人过桥问题

题目: 有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥...
  • u013634862
  • u013634862
  • 2014年09月14日 11:03
  • 984
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Luogu_MayR1 D] 核心密码B
举报原因:
原因补充:

(最多只允许输入30个字)