不理解

P1035 [NOIP2002 普及组] 级数求和

YZHM @ 2024-01-20 20:37:00

#include<iostream>
using namespace std;
int main()
{
    int k,n;
    double a,b;
    cin >> k;
    int i=1;
    for(;;i++){
        a = 1.0/i;
        b = b+a;
        if(b>k){
            break;
        }
    }
    cout << i;
}

为什么·把for换成while就全TLE了?

#include<iostream>
using namespace std;
int main()
{
    int k,n;
    double a,b;
    cin >> k;
    int i=1;
    while(i++){
        a = 1.0/i;
        b = b+a;
        if(b>k){
            break;
        }
    }
    cout << i;
}

by pi3_141592653589 @ 2024-06-09 11:38:29

用while会WA,因为for是当前循环执行完后才i++,但是while是在执行当前循环前就i++了。


by pi3_141592653589 @ 2024-06-09 13:11:32

用while的话i初始值应为0,while里的判断语句改为++i.


|