by 建國中學 張均豪 賴昭勳
如果是偶數的話就除2
如果是奇數的話就乘以3然後加1
輸出總共幾次之後那個數字會變成 1
int n;
cin >> n;
for (int i = 2;i <= n;i++) {
bool isprime = true;
for (int j = 2;j < n;j++) {
if (n % j == 0) {
isprime = false;
break;
}
}
if (isprime) {
cout << i << endl;
}
}
電腦也沒有你想像的那麼快
\(3 * 10^8\) 次操作 / 秒還不夠用?
時間複雜度?
運算次數和問題大小的關係
#include <iostream>
using namespace std;
int main () {
int n;
cin >> n;
int a[n];
int zeronum = 0;
for (int i = 0;i < n;i++) {
char c;
cin >> c;
if (c == 'R') {
a[i] = 0;
zeronum += 1;
} else {
a[i] = 1;
}
}
int zeros = 0, ones = 0;
int ans = 10000000;
for (int i = 0;i <= n;i++) {
int m = 0;
if (zeronum - zeros > ones) {
m = zeronum - zeros;
} else {
m = ones;
}
if (m < ans) {
ans = m;
}
if (i < n) {
if (a[i] == 0) {
zeros += 1;
} else {
ones += 1;
}
}
}
cout << ans << endl;
}