题目大意:给你n和x($n\leq 10^{18},0<x\leq 1$),要你求$\sum_{i=1}^n\frac{x^i}{i}$。

解题思路:首先n大到要用long long存,暴力肯定是不行的。然后我们发现,当i越来越大时,答案几乎不会变,我们可以直接跳出。真的是这样吗?其实当你越加越多,会发现答案有微小的变化,然后你就WA了!

你有没有发现要求的东西和泰勒级数展开公式很相似?

根据泰勒级数展开公式$\ln(1+x)=x-\frac{x^2}{2}+\frac{x^3}{3}-\frac{x^4}{4}+...(-1\leq x<1)$,把x用-x替代,发现所有项都变成负数了。

然后可以得:$-\ln(1-x)=x+\frac{x^2}{2}+\frac{x^3}{3}+\frac{x^4}{4}+...(-1\leq x<1)$。

求出这个极限后,我们计算答案时,发现已经及其接近极限,则跳出循环即可,可以大大减少运算量。

但题目说x可能等于1,然而数据里是没有的(否则时限1小时都算不完)。

注意循环时求$x^i$要用快速幂,否则可能还是会TLE(貌似每次循环乘个x也能AC)。

开始我以为C++的log是以2为底的,为了求ln,用了换底公式$\ln N=\log N / \log e$,后来才知道C++的log以e为底,相当于ln。

C++ Code:

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
#define ll long long
ll n;
double x;
double fast_pow(double x,ll i){
double ans=1;
while(i){
if(i&1)ans*=x;
x*=x;
i>>=1;
}
return ans;
}
int main(){
ios::sync_with_stdio(0);
cin>>x>>n;
double lim=-(log(1-x)/log(exp(1)));
double ans=0.0;
for(ll i=1;i<=n&&fabs(ans-lim)>1e-7;++i)ans+=fast_pow(x,i)/i;
cout<<fixed<<setprecision(4)<<ans<<endl;
return 0;
}

[洛谷P1920]成功密码的更多相关文章

  1. 洛谷——P1920 成功密码

    P1920 成功密码 题目描述 void_rank匪别人的书来看,原本想看杂志颓废的,结果不小心拿错拿成了被导师称作旁门左道的高中数学杂志<成功密码>.数学差得不行的void_rank实在 ...

  2. 洛谷 P1920 成功密码 题解

    这是蒟蒻的第一篇题解,(之前的都没过,估计这篇也过不了 回到正题 这题,本蒟蒻第一眼看到以后,就决定咦,这不是模拟吗? 看到世界范围,嗯,打扰了. 扯回正题 首先,暴力肯定是A不了的(至少我A不了 但 ...

  3. 【洛谷】P5348 密码解锁

    [洛谷]P5348 密码解锁 很显然我们可以推导出这个式子 设\(a(m)\)为\(m\)位置的值 \[ \mu(m) = \sum_{m | d} a(d) \\ a(m) = \sum_{m|d} ...

  4. 洛谷 U6850 手机密码

    U6850 手机密码 题目背景 小明的手机上设了一个由四个数字组成的密码,但是小明自己的记性不好,但又不想把密码直接记在纸上,于是便想了一个方法. 题目描述 小明有四行数字,每行数字都有n[i](&l ...

  5. [NOIP2012] 提高组 洛谷P1079 Vigenère 密码

    题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...

  6. 洛谷 P1914 小书童——密码【字符串+模拟】

    P1914 小书童——密码 题目背景 某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你. 题目描述 蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成.且 ...

  7. 洛谷 P1079 Vigenère 密码

    题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...

  8. 洛谷 P1481 魔族密码

    P1481 魔族密码 题目描述 风之子刚走进他的考场,就…… 花花:当当当当~~偶是魅力女皇——花花!!^^(华丽出场,礼炮,鲜花) 风之子:我呕……(杀死人的眼神)快说题目!否则……-_-### 花 ...

  9. 洛谷P1914 小书童——密码

    题目背景 某蒟蒻迷上了"小书童",有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你. 题目描述 蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成.且密码是由 ...

随机推荐

  1. CDR X7 限时3折618年中大促,是时候出手了!

    力量与激情.胜利与喜悦,这些自带饱满情绪的词,即将“刷屏”这个夏天!32支球队,28个不眠夜,你将与谁度过? 一场视觉上的饕餮盛宴即将开始! 小编也是个疯狂足球迷,虽然中国队无缘今年的俄罗斯世界杯,但 ...

  2. 路飞学城Python-Day19(Py_Notes)

    # 先定义类 class LuffyStudent: school = 'luffy' def learn(self): print('学习使我快乐') def eat(self): print('吃 ...

  3. keepalived 和 heartbeat对比

    Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP): Heartbeat是基于主机或网络的服务的高可用 ...

  4. python_函数、局部变量与全局变量

    #函数优点:代码重用.保持一致性.可扩展性import time def logger(): """时间年-月-日 分""" time_fo ...

  5. oracle 的列转行函数 listagg()

    当你的表X中有A,B两列,数据如下 A B a 1 a 2 a 3 b 1 b 2 b 3 想让数据以 a|1|2|3 , b|1|2|3 格式显示可使用listagg() 1.使用listagg() ...

  6. 【codeforces 810B】Summer sell-off

    [题目链接]:http://codeforces.com/contest/810/problem/B [题意] 每天有ki件物品,你知道每天能卖掉li件; 然后让你选f天; 这f天,可以将ki乘上2; ...

  7. ASP.NET-internat身份验证

    ASP.NET-internat身份验证默认在webconfig中配置的代码是这样的 <system.web> <compilation debug="true" ...

  8. cogs 2752. [济南集训 2017] 数列运算

    2752. [济南集训 2017] 数列运算 ★★☆   输入文件:sequenceQBXT.in   输出文件:sequenceQBXT.out   简单对比时间限制:1 s   内存限制:512 ...

  9. error: could not install *smartsocket* listener: Address already in use 下午8:49 ADB server didn't ACK 下午8:49 * failed to start daemon * 下午8:49 error: cannot connect to daemon

    在终端输入adb命令,出错如下: localhost:work zhangyg$ adb devices List of devices attached adb server version (32 ...

  10. SharePoint 2010 安装教程

    SharePoint Server 2010作为MOSS 2007的升级版本,自从2009年底发布Beta版本以来就备受关注,网络上已经出现了很多相关的文章,其中也不乏中文的信息. 最近SharePo ...