작성일 :

문제 링크

6815번 - Cool Numbers

설명

구간 [a, b] 안에서 제곱수이면서 동시에 세제곱수인 수의 개수를 구하는 문제입니다.


접근법

제곱수이면서 세제곱수인 수는 결국 6제곱수입니다. 따라서 구간 안에 들어가는 6제곱수의 개수만 세면 충분합니다.

1부터 차례로 i^6을 구해 보면서, 그 값이 구간 [a, b] 안에 들어오는지만 확인하면 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;

class Program {
  static void Main() {
    long a = long.Parse(Console.ReadLine()!);
    long b = long.Parse(Console.ReadLine()!);

    int count = 0;
    for (long i = 1; i * i * i * i * i * i <= b; i++) {
      long value = i * i * i * i * i * i;
      if (value >= a)
        count++;
    }

    Console.WriteLine(count);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  long long a, b;
  cin >> a >> b;

  int count = 0;
  for (long long i = 1; i * i * i * i * i * i <= b; i++) {
    long long value = i * i * i * i * i * i;
    if (value >= a)
      count++;
  }

  cout << count << "\n";

  return 0;
}

Tags: 6815, BOJ, C#, C++, 백준, 수학, 알고리즘

Categories: ,