for文を使った基礎練習40題

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;

タグ: for-loop Algorithm math cpp basic-programming

9月22日 11:57 投稿