初学c++ 求解
题一:级数求和
[问题描述]:
已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。现给出一个整数K(1<=K<=15),要求计算出一个最小的n,使得Sn>K
希望通过c++求解 且不超时 时间限制1000ms
[解决办法]
#include<iostream>
using namespace std;
int main()
{
double s=0.0;
int k;
cout<<"输入一个整数(1-15):";
cin>>k;
for(unsigned long n=1;;++n)
{
s=s+(double)1/n;
if (s-k>0.0)
{
cout<<"最小的n为:"<<n;
break;
}
}
return 0;
}
也是新手,共同学习
[解决办法]
for里边第一句改成s+=(double)1/n,呵呵,这里不用double强制转换好像不能自动转换,s的值始终是1,不知道咋回事?
[解决办法]
[解决办法]
[解决办法]
代码风格需要加强~变量命名有问题。
[解决办法]
#include<iostream>
#include<windows.h>
#include <string>
using namespace std;
int main()
{
float sn=1,sm=1;
int n,k;
cout<<"输入K:"<<endl;
cin>>k;
if(k<=1 || k>=15)
{
cout<<"error"<<endl;
}
n=1;
sm=sn;
while(sn<=k)
{
n++;
sn=float(1.0/n)+sm;
sm=sn;
}
cout<<n<<endl;
system("pause");
return 0;
}