1. 1からnまでの総和
整数 n を読み込み、1+2+…+n を出力する。
int n, total = 0;
cin >> n;
for (int i = 1; i <= n; ++i) total += i;
cout << total;
2. 1〜n の偶数を列挙
昇順で偶数を空白区切りで出力。
int n;
cin >> n;
for (int v = 2; v <= n; v += 2) cout << v << ' ';
3. 奇数の和と偶数の和
int n, odd = 0, even = 0;
cin >> n;
for (int i = 1; i <= n; ++i)
(i & 1 ? odd : even) += i;
cout << even << ' ' << odd;
4. n の階乗
int n; long long fact = 1;
cin >> n;
for (int i = 2; i <= n; ++i) fact *= i;
cout << fact;
5. クラスの平均年齢
int n, age, sum = 0;
cin >> n;
for (int i = 0; i < n; ++i) { cin >> age; sum += age; }
printf("%.2f", sum / (double)n);
6. 標本平均値(小数4桁)
int n; double x, avg = 0;
cin >> n;
for (int i = 0; i < n; ++i) { cin >> x; avg += x; }
printf("%.4f", avg / n);
7. 整数列の総和と平均(小数5桁)
int n, val, total = 0;
cin >> n;
for (int i = 0; i < n; ++i) { cin >> val; total += val; }
printf("%d %.5f", total, total / (double)n);
8. 最高点
int n, score, best = 0;
cin >> n;
for (int i = 0; i < n; ++i) { cin >> score; best = max(best, score); }
cout << best;
9. 最大スパン値
int n, val, lo = 1e9, hi = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> val;
lo = min(lo, val);
hi = max(hi, val);
}
cout << hi - lo;
10. オリンピックメダル集計
int n, g, s, b, tg = 0, ts = 0, tb = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> g >> s >> b;
tg += g; ts += s; tb += b;
}
cout << tg << ' ' << ts << ' ' << tb << ' ' << tg + ts + tb;
11. m〜n の奇数総和
int m, n, sum = 0;
cin >> m >> n;
for (int i = m; i <= n; ++i)
if (i & 1) sum += i;
cout << sum;
12. 17 で割り切れる数の総和
int l, r, sum = 0;
cin >> l >> r;
for (int i = l; i <= r; ++i)
if (i % 17 == 0) sum += i;
cout << sum;
13. 1, 5, 10 の出現回数
int k, x, cnt1 = 0, cnt5 = 0, cnt10 = 0;
cin >> k;
for (int i = 0; i < k; ++i) {
cin >> x;
if (x == 1) ++cnt1;
else if (x == 5) ++cnt5;
else if (x == 10) ++cnt10;
}
cout << cnt1 << '\n' << cnt5 << '\n' << cnt10;
14. 指定値の個数
int n, m, v, cnt = 0;
cin >> n >> m;
for (int i = 0; i < n; ++i) { cin >> v; cnt += (v == m); }
cout << cnt;
15. 累乗計算
long long a, n, ans = 1;
cin >> a >> n;
for (int i = 0; i < n; ++i) ans *= a;
cout << ans;
16. 人口増加(0.1%/年)
double x; int n;
cin >> x >> n;
for (int i = 0; i < n; ++i) x *= 1.001;
printf("%.4f", x);
17. フィボナッチ第k項
int k, a = 1, b = 1;
cin >> k;
if (k <= 2) { cout << 1; return 0; }
for (int i = 3; i <= k; ++i) {
int c = a + b;
a = b; b = c;
}
cout << b;
18. カクテル療法判定
int n, total, ok; double base, cur;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> total >> ok;
cur = (double)ok / total;
if (i == 0) { base = cur; continue; }
if (cur - base > 0.05) cout << "better\n";
else if (base - cur > 0.05) cout << "worse\n";
else cout << "same\n";
}
19. 薬局在庫管理
int m, n, req, reject = 0;
cin >> m >> n;
for (int i = 0; i < n; ++i) {
cin >> req;
if (m < req) ++reject;
else m -= req;
}
cout << reject;
20. 最長連続正常血圧
int n, sys, dia, streak = 0, best = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> sys >> dia;
if (90 <= sys && sys <= 140 && 60 <= dia && dia <= 90) {
++streak;
best = max(best, streak);
} else streak = 0;
}
cout << best;
21. 同じ余りを与える最小のx
long long a, b, c;
cin >> a >> b >> c;
for (long long x = 2; ; ++x)
if (a % x == b % x && b % x == c % x) { cout << x; break; }
22. りんごを均等に配る最小個数
int n, need = 0;
cin >> n;
for (int i = 1; i <= n; ++i) need += i;
cout << need;
23. 累積和が m を超える最小 n
int m, sum = 0, n = 0;
cin >> m;
while (sum <= m) { ++n; sum += n; }
cout << n;
24. 最大公約数(逐次減法)
int a, b;
cin >> a >> b;
while (a != b) (a > b ? a -= b : b -= a);
cout << a;
25. データ統計(min, max, avg)
int x, cnt = 0, sum = 0, mn = 1e9, mx = -1e9;
while (cin >> x) {
++cnt; sum += x;
mn = min(mn, x); mx = max(mx, x);
}
printf("%d %d %.3f", mn, mx, sum / (double)cnt);
26. ボールの10回転落下
double h, path = 0;
cin >> h;
for (int i = 0; i < 10; ++i) {
path += h; // 落下
h /= 2; // 反発
if (i < 9) path += h; // 上昇(最後は不要)
}
cout << path << '\n' << h;
27. コラッツ予想の経路出力
long long n;
cin >> n;
while (n != 1) {
if (n & 1) { cout << n << "*3+1=" << 3 * n + 1 << '\n'; n = 3 * n + 1; }
else { cout << n << "/2=" << n / 2 << '\n'; n /= 2; }
}
cout << "End";
28. 調和級数が k を超える最小 n
int k, n = 0; double s = 0;
cin >> k;
while (s <= k) { ++n; s += 1.0 / n; }
cout << n;
29. 各桁を逆順に出力
int n;
cin >> n;
do { cout << n % 10 << ' '; n /= 10; } while (n);
30. 数値を反転(先頭0除去)
long long n, rev = 0;
cin >> n;
while (n) { rev = rev * 10 + n % 10; n /= 10; }
cout << rev;
31. 19 で割れてちょうど k 個の3を含むか
int m, k, cnt = 0;
cin >> m >> k;
if (m % 19 == 0) {
int t = m;
while (t) { cnt += (t % 10 == 3); t /= 10; }
cout << (cnt == k ? "YES" : "NO");
} else cout << "NO";
32. 1992 の n 乗の下2桁
int n, last = 1;
cin >> n;
for (int i = 0; i < n; ++i) last = (last * 92) % 100;
cout << last;
33. 体操部の最少人数
int i = 1;
while (true) {
if (i % 2 == 1 && i % 3 == 1 && i % 4 == 1 && i % 5 == 1 && i % 6 == 1 && i % 7 == 0)
{ cout << i; break; }
++i;
}
34. 階乗の総和 S=Σk!
int n; long long fact = 1, sum = 0;
cin >> n;
for (int k = 1; k <= n; ++k) {
fact *= k;
sum += fact;
}
cout << sum;
35. 直角三角形アスタリスク
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
for (int j = 0; j < i; ++j) cout << '*';
cout << '\n';
}
36. 3桁の水仙花数
for (int num = 100; num <= 999; ++num) {
int a = num / 100, b = num / 10 % 10, c = num % 10;
if (a*a*a + b*b*b + c*c*c == num) cout << num << '\n';
}
37. a〜b の素数列挙
int a, b; cin >> a >> b;
for (int p = a; p <= b; ++p) {
if (p < 2) continue;
bool prime = true;
for (int d = 2; d * d <= p; ++d)
if (p % d == 0) { prime = false; break; }
if (prime) cout << p << '\n';
}
38. aabb 型 4 桁完全平方数
#include <cmath>
for (int num = 1000; num <= 9999; ++num) {
int a = num / 100, b = num % 100;
if (a / 10 == a % 10 && b / 10 == b % 10) {
int root = sqrt(num);
if (root * root == num) cout << num << '\n';
}
}
39. 1〜n に含まれる数字 1 の個数
int n, ans = 0; cin >> n;
for (int v = 1; v <= n; ++v) {
int t = v;
while (t) { ans += (t % 10 == 1); t /= 10; }
}
cout << ans;