时间复杂度
用处:当数据大小扩大一倍时,算法的时间如何扩大?
常见的时间复杂度:
O(1) 常数
O(n)线性
O(logn)对数
欧拉计划problem1:
如果我们列出所有 10 以下的自然数是 3 或 5 的倍数,我们会得到 3、5、6 和 9。这些倍数之和是 23。找出 1000 以下所有 3 或 5 的倍数之和。
方法一
#include<iostream>
using namespace std;
int main(){
int ans = 0;
for(int i = 1; i < 1000; i++){
if(i % 3 == 0 || i % 5 == 0){
ans += i;
}
}
cout << ans << endl;
return 0;
}
方法二
3的倍数和+5的倍数和-15的倍数和
等差数列求和公式
#include<iostream>
using namespace std;
int main(){
int t3 = ( 3 + 999) * 333 / 2;
int t5 = ( 5 + 995) * 199 / 2;
int t15 = ( 15 + 990) * 66 /2;
cout << t3 + t5 - t15 << endl;
return 0;
}