for
但此法的缺陷是当n很大时,会循环很多次,影响运行时间。时间复杂度为O(n/2)=O(n)
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
for (int i=1; i<=n; i++)
if (i%2 == 0)
sum += i;
cout << sum << endl;
return 0;
}
while
时间复杂度同上。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
while (n) {
if (n%2 == 0)
sum += n;
n--;
}
cout << sum << endl;
return 0;
}
利用数学规律
详细解释:https://www.nowcoder.com/practice/03df7fa0950046a9ba564b4438f918a3?tpId=225&tags=&title=&difficulty=0&judgeStatus=0&rp=0
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
if (n%2 == 1)
n--;
sum = (n/2) * (n/2 + 1);
cout << sum << endl;
return 0;
}