AOJ 0056 Goldbach's Conjecture
i番目とn-i番目の数が素数なら二つの和がnになるのでカウント
#include <iostream> #include <numeric> using namespace std; #define SIZE 50001 int main() { bool prime[SIZE]; fill(prime, prime + SIZE, true); prime[0] = prime[1] = false; for (int i = 2; i * i < SIZE; i++) { for (int j = 2; j * i < SIZE; j++) { if (!prime[i * j]) continue; prime[i * j] = false; } } int n, count; while (cin >> n) { if (n == 0) break; count = 0; for (int i = 0; i <= n / 2; i++) { if (prime[i] && prime[n - i]) count++; } cout << count << endl; } return 0; }
AOJ 0054 Sum of Nth decimal places
#include <iostream> using namespace std; int main() { int a, b, n; while (cin >> a) { cin >> b >> n; int sum = 0; for (; n-- > 0;) { a = a % b * 10; sum += a / b; } cout << sum << endl; } return 0; }
AOJ 0053 Sum of Prime Numbers
n個の素数を足すまでwhile文を回しただけ。
#include <iostream> #include <numeric> using namespace std; int main() { bool prime[1000000]; fill(prime, prime + 1000000, true); prime[0] = prime[1] = false; for (int i = 2; i * i < 1000000; i++) { for (int j = 2; j * i < 1000000; j++) { if (!prime[i * j]) continue; prime[i * j] = false; } } int n; while (cin >> n) { if (n == 0) break; int t = 0, sum = 0; while (n > 0) { if (!prime[++t]) continue; n--; sum += t; } cout << sum << endl; } return 0; }
AOJ 0052 Factorial II
因数5がいくつか計算する
#include <iostream> using namespace std; int main() { int n; while (cin >> n) { if (n == 0) break; int i = 0; while (n /= 5) i += n; cout << i << endl; } return 0; }
AOJ 0046 Differential
そのまんま、
#include <iostream> using namespace std; int main(){ double n, ma = 0, mi = 1000000; while (cin >> n) { if (n > ma) ma = n; if (n < mi) mi = n; } cout << (ma - mi) << endl; return 0; }
AOJ 0045 Sum and Average
自分で四捨五入する関数書いたらエラー吐かれたのでしぶしぶstl使った...
#include <iostream> #include <cmath> using namespace std; int main() { int n, w, sum = 0, i = 0; double ws = 0; char t; while (cin >> n) { cin >> t >> w; i++; sum += n * w; ws += w; } cout << sum << endl; cout << round(ws / i) << endl; return 0; }
AOJ 0044 Prime Number II
最小の素数と最大の素数 | Aizu Online Judge
エラトステネスの篩で素数判定をした後に探索、愚鈍なコードを書いたと思う(numericインクルードしとけばfill仕えたのか...)
#include <iostream> #include <numeric> using namespace std; int main() { bool prime[100000]; fill(prime, prime + 100000, 1); prime[0] = prime[1] = false; for (int i = 2; i * i < 100000; i++) { for (int j = 2; i * j < 100000; j++) { if (!prime[i * j]) continue; prime[i * j] = false; } } int n; while (cin >> n) { int i = 0; for (int i = n - 1; i >= 0; i--) { if (prime[i]) { cout << i << " "; break; } } for (int i = n + 1; i < 100000; i++) { if (prime[i]) { cout << i << endl; break; } } } return 0; }