p转c++,求教

P1035 [NOIP2002 普及组] 级数求和

20030103pz @ 2018-04-04 20:58:38

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; } //为什么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++?你是初二党吗?


| 下一页