日结3.4
1.设 a 1 a_1 a1>0, a n a_n an = l n ( 1 + a n ) ln(1+a_n) ln(1+an)(n=1,2, ⋯ {\cdots} ⋯), 求 lim x → ∞ a n + 1 − a n a n a n + 1 {\lim_{x \to \infty} \frac{a_{n+1} - a_n} {a_na_{n+1}}} x→∞limanan+1an+1−an.
lim x → ∞ a n + 1 − a n a n a n + 1 {\lim_{x \to \infty} \frac{a_{n+1} - a_n} {a_na_{n+1}}} x→∞limanan+1an+1−an
= lim x → ∞ l n ( 1 + a n ) − a n a n l n ( 1 + a n ) {\lim_{x \to \infty} \frac{ln(1+a_n)-a_n} {a_nln(1+a_n)}} x→∞limanln(1+an)ln(1+an)−an
= l m a o a n = t \xlongequal[lmao]{a_n = t} an=tlmao
lim x → ∞ l n ( 1 + t ) − t t l n ( 1 + t ) {\lim_{x \to \infty} \frac{ln(1+t)-t} {tln(1+t)}} x→∞limtln(1+t)ln(1+t)−t = lim x → ∞ l n ( 1 + t ) − t t 2 {\lim_{x \to \infty} \frac{ln(1+t)-t} {t^2}} x→∞limt2ln(1+t)−t
= lim x → ∞ 1 1 + t − 1 2 t {\lim_{x \to \infty} \frac{ \frac{1} {1+t} -1} {2t}} x→∞lim2t1+t1−1
= − 1 2 {\frac {-1}{2}} 2−1
2.569溶液模拟
题目描述
小 Y 虽然有很多溶液,但是还是没有办法配成想要的溶液,因为万一倒错了就没有办法挽回了。他从网上下载了一个溶液配制模拟器:模拟器在计算机中构造一种虚拟溶液,然后可以虚拟地向当前溶液中加入一定浓度、一定质量的这种溶液,模拟器会快速地算出倒入后虚拟溶液的浓度和质量。
模拟器的使用步骤如下:
(1) 为模拟器设置一个初始质量和浓度 V 0 V_0 V0、 C 0 C_0 C0%(0≤ C 0 C_0 C0≤100)。
(2)进行一系列的操作,模拟器支持的两种操作:一种是 P(v,c) 操作,表示向当前的虚拟溶液中加入质量为 v 、浓度为 c 的溶液;另一种是 Z 操作,即撤销上一步 P 操作。
输入
第 1 行两个整数 V0 、C0。
第 2 行 1 个整数 n ,n≤10000,表示操作数。
接下来的 n 行,每行一条操作,格式为:P v c 或 Z。当只剩下初始溶液的时候,再撤销就没有用了。
任意时刻质量都不会超过 2 31 2^{31} 231−1。
输出
输出 n 行,每行两个数
V
i
V_i
Vi、
C
i
C_i
Ci,之间用一个空格隔开,其中
V
i
V_i
Vi 为整数,
C
i
C_i
Ci 为实数(保留 5 位小数)。其中,第 i 行表示第 i 次操作后的溶液质量和浓度。
样例输入
100 100
2
P 100 0
Z
样例输出
200 50.00000
100 100.00000
代码如下
#include<iostream>
#include<stack>
#include<cstdio>
using namespace std;
struct node{
double v,c,salt;
};
inline int read() {
int k = 0 , f = 1 ; char c = getchar() ;
for( ; !isdigit(c) ; c = getchar())
if(c == '-') f = -1 ;
for( ; isdigit(c) ; c = getchar())
k = k*10 + c-'0' ;
return k*f ;
}
int main() {
double v0,c0,salt0;
stack<node> s;
cin>>v0>>c0;
salt0 = v0*c0 / 100;
int n;
cin>>n;
for(int i=0;i<n;i++) {
char t;
cin>>t;
if(t=='P') {
double vt,ct,saltt;
vt = (double) read();
ct = (double) read();
saltt = vt * ct / 100.0;
v0 += vt;
salt0 += saltt;
s.push({vt,ct,saltt});
}
if(t=='Z') {
if(!s.empty()) {
v0 -= s.top().v;
salt0 -= s.top().salt;
s.pop();
}
}
printf("%d %.5f\n",(int)v0,salt0/v0 *100.00);
}
}