问题标题: 酷町堂:3945为什么用cmath函数做输出不对?

0
0
已解决
赵逸凡
赵逸凡
初级启示者
初级启示者

3945错误代码

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
long double n;
int main()
{
	scanf("%.lf",&n);
    printf("%.lf",double(log(n)/log(1.01)));
    return 0;
}

我用对数函数以1.01为底、n为对数函数自变量写的,为什么输出900多?时间O(n log n)

赵逸凡在2020-07-06 13:23:10追加了内容

@黄依成 主要是时间复杂度尽量小,万一比赛出这道题那么AC就很难了

 


0
已采纳
李泽远
李泽远
高级天翼
高级天翼

7.7.png

李泽远在2020-07-07 12:31:16追加了内容

7.72.png

李泽远在2020-07-07 12:35:35追加了内容

输出int(log((log(n)/log(1.01)))/log(2))+1,已AC

李泽远在2020-07-07 12:36:27追加了内容

代码虽然长得丑,但是能拿满分哈哈哈哈哈哈哈哈哈哈哈哈或或或或或或或

0
0
赵逸凡
赵逸凡
初级启示者
初级启示者

@李泽远 怎么用对数函数做?底数已知

 

0
李泽远
李泽远
高级天翼
高级天翼

我都不知道C++库里有log函数

李泽远在2020-07-07 12:13:29追加了内容

@赵逸凡 ,log是用来求n是1.01的几次方的,题目说的是1.01的平方的平方的平方……

李泽远在2020-07-07 12:44:10追加了内容

换底+换底=AC

李泽远在2020-07-07 12:48:40追加了内容

我这数学没白学哈哈哈

0
赵逸凡
赵逸凡
初级启示者
初级启示者

@李泽远 假设n=1.01^4 =(1.01^2)^2 ,似乎可以用log+sqrt做

我要回答