题目:P1035
- 复习了一下1.的用法
- double确保精度尽可能不丢失
#include <iostream>
using namespace std;
int main()
{
int k,n;
// float count=0;
double count=0;
cin>>k;
for(n=1;;n++)
{
count+=1./n;
// cout<<1./n<<endl;
if(count<=k&&count+1./(n+1)>=k)
break;
}
cout<<n+1;
return 0;
}
题解1://一重循环
#include<cstdio>
int main() {
int k,n=0;
scanf("%d",&k);
for(double Sn=0;Sn<=k;++n,Sn+=1.0/n);
printf("%d",n);
return 0;
}
题解2://数论
#include<cstdio>
#include<cmath>
const double gamma=0.5772156649;
int main() {
int k,n;
scanf("%d",&k);
n=exp(k-gamma)+0.5;
printf("%d",n);
return 0;
}
P1423
我的:
#include <iostream>
using namespace std;
int main()
{
double x,b,t,count=0;
cin>>x;
int i;
b=2;
t=b;
count+=b;
for(i=1;count<x;i++)
{
b=t*0.98;
count+=b;
// cout<<count<<" "<<i<<endl;
t=b;
}
cout<<i;
return 0;
}
题解1:
#include<bits/stdc++.h>
double x;
int main()
{
std::cin>>x;
std::cout<<ceil(log(1-x/100)/log(0.98));
return 0;
}