20030103pz @ 2018-04-04 20:58:38
using namespace std;
int main()
{
int k,n=0;
cin>>k;
while (k>=0)
{
n=n+1;
k=k-1/n;
}
cout<<n;
return 0;
}
//为什么tle了
by linzhihan @ 2018-04-04 21:03:36
你好,首先n=n+1一般在C++中可以直接省略为n++,然后我想知道k=k-1/n是什么意思。
by x义x @ 2018-04-04 21:04:07
请先把格式用markdown弄好
不然大家没心情看你代码的
by linzhihan @ 2018-04-04 21:06:09
include <iostream>
using namespace std;
int main()
{
int k,n=0;
cin>>k;
while (k>=0)
{
n=n+1;
k=k-1/n;
}
cout<<n;
return 0;
}
by da32s1da @ 2018-04-04 21:06:14
#include <iostream>
using namespace std;
int main()
{
int k,n=0;
cin>>k;
while (k>=0)
{
++n;
k=k-1/n;
}
cout<<n;
return 0;
}
by linzhihan @ 2018-04-04 21:06:23
我帮忙整理好了。
by linzhihan @ 2018-04-04 21:06:52
来了个红名的大佬。
by x义x @ 2018-04-04 21:07:13
问题在于
k=k-1/n
中1/n这个运算它的参与操作的数1和n都是整型,c++和p不一样,c++的整数除法相当于pascal的div,只返回商,余数截掉。
所以当n>=2时,1/n都只能是0,k不会改变,当然也就是死循环tle。
解决办法是把k定义为double,把1/n改为1.0/n。
by linzhihan @ 2018-04-04 21:07:17
我找到问题所在了
by linzhihan @ 2018-04-04 21:07:31
我刚想回复。
by linzhihan @ 2018-04-04 21:08:27
Pas转C++?你是初二党吗?