奇怪的函数 (wikioi 3538/1696) 题解

【题目描述】

给定n,使得x^x达到或超过n位数字的最小正整数x是多少?

【样例输入】

11

【样例输出】

10

【解题思路】

首先想到枚举,但是范围有点大,n<=2*10^9,果断用二分。其实这道题并不难,要用到一个求位数的公式trunc(t*(ln(t)/ln(10)))+1,初三自然是没学的,直接抄上公式,AC……,二分的时候注意一下退出的条件。(wikioi上1696和3538的题目不一样,但同一个程序都能AC,也不知道1696中的k是干嘛的……)

【代码实现】

 1 var n:qword;
 2 function js(t:longint):qword;
 3 begin
 4  if t=1 then
 5   js:=1
 6  else
 7  js:=trunc(t*(ln(t)/ln(10)))+1;
 8 end;
 9 procedure ef(l,r:longint);
10 var m:longint;
11 begin
12  if l=r then//退出条件,如果l=m,js(m)>=n,就无法二分了,也不难证明这个即为答案。同理,m+1与r一个意思
13   begin
14    writeln(l);
15    exit;
16   end;
17  m:=(l+r)div 2;
18  if js(m)>=n then//比n大,往左走,
19   ef(l,m)
20  else
21   ef(m+1,r);
22 end;
23 begin
24  readln(n);
25  ef(1,2000000000);
26 end.

奇怪的函数

时间: 2024-12-19 13:31:03

奇怪的函数 (wikioi 3538/1696) 题解的相关文章

洛谷 P2759 奇怪的函数

P2759 奇怪的函数 题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x 输入输出样例 输入样例#1: 11 输出样例#1: 10 说明 n<=2000000000 思路:根据换底公式 可以推得,当x*log10(x)==n-1时x^x恰好为n位数,所以二分查找即可,在特判一下为1的情况. #include<cmath> #include<cstdio>

cogs 558 奇怪的函数

提交地址:http://cojs.tk/cogs/problem/problem.php?pid=558 558. 奇怪的函数 ★☆   输入文件:xx.in   输出文件:xx.out   简单对比时间限制:1 s   内存限制:32 MB 问题描述 使得x^x达到或超过n位数字的最小正整数x是多少? 输入数据 输入一个正整数n. 输出数据 输出使得x^x达到n位数字的最小正整数x. 输入样例 11 输出样例 10 时间限制 各测试点1秒 内存限制 你的程序将被分配32MB的运行空间 数据规模

洛谷P2759 奇怪的函数

P2759 奇怪的函数 题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x 输入输出样例 输入样例#1: 11 输出样例#1: 10 说明 n<=2000000000 换底公式 /* 相当于解不等式x^x>=10^(n-1) 两边取常用对数 x*log10(x)>=n-1 左边是单调增的 然后二分查找就行了 */ #include<iostream> #

asp中的一个奇怪的函数

/* 豆腐制作 都是精品 http://www.asp888.net 豆腐技术站 如转载 请保留版权信息 */ asp中有很多的文章在研究如何提高asp程序的执行效率,我们 得出结论 在<% 和 %> 之间的代码执行的速度要高于 在这个 标签之外的代码,我们有没有想过 如何重复的利用这些在标签之外的代码呢? 有的人可能觉得 这个没有什么意义!但是我们可以 怀着 一种很轻松的心态来看看下面这个例子,看看 我们得到了什么有趣的现象!在这个例子中,我们用到了 MSDN 中没有介绍的 WriteBlo

好题收集(2) 奇怪的函数(数学)

奇怪的函数 Description洛谷P2759使得$x^x$达到或超过 $n$ 位数字的最小正整数 $x$ 是多少? Hint乍一看是一道数学题其实就是一道数学题$a$ 在 $b$ 进制下的位数 $p$ 的计算公式为 $p=\lfloor log_b a \rfloor+1$其实很好理解:设$\lfloor x \rfloor$表示不超过 $x$ 的最大整数,若 $n=(a_k,a_k-1,…a_1,a_0)_b,a_k≠0$,则$$b^k≤n<b^{k+1} ⇒k≤log_bn<k+1$$

【CodeVS】 p1696 奇怪的函数

题目描述 Description 自从得到上次的教训后,John的上课态度认真多了,也变得更爱动脑筋了.今天他又学习了一个新的知识:关于 xk 的位数. 如果x大于0小于l,那么位数=1+小数部分×k, 如果x≥l,那么位数=trunc(ln(x)/ln(10)×k)+1+小数部分×k. 根据这些函数知识,他学会了求xk的位数了.但他又想到了另外一个问题,如果已知位数N,能不能求出使得 xk 达到或超过N位数字的最小正整数x是多少? 输入描述 Input Description 输入一个正整数n

P2759 奇怪的函数

题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x 输入输出样例 输入样例#1: 11 输出样例#1: 10 说明 n<=2000000000 题解:二分答案 实质是求 x^x>=10^(n-1), log(x^x)>=log(10^(n-1)) x*log(x)>=n-1 因为左边是单调的 二分即可. 代码: #include<iostream>

【日常学习】【欧拉函数】codevs2296 仪仗队题解

转载请注明出处 [ametake版权所有]http://blog.csdn.net/ametake欢迎来看看 题目来源:SDOI2008 文章被剽窃很严重啊 所以以后都带上版权信息 先上题目 题目描述 Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图). 现在,C君希望你告诉他队伍整齐时能看到的学生人数. 输入描述 Input De

一元三次方程 (wikioi 1038)题解

[问题描述] 有形如:ax3+bx2+cx+d=0这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1.要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位.提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个 根. [样例输入] 1 -5 -4 20 [样例输出] -2.00