본문 바로가기

Algorithm/Brute Force

(Rust) - 백준(BOJ) 25494 : 단순한 문제 (Small)

반응형

https://www.acmicpc.net/problem/25494

 

25494번: 단순한 문제 (Small)

세 양의 정수 $a$, $b$, $c$가 주어질 때, 다음 조건을 만족하는 정수 쌍 $(x, y, z)$의 개수를 구하시오. $1 \le x \le a$ $1 \le y \le b$ $1 \le z \le c$ $(x\,\bmod\,y) = (y\,\bmod\,z) = (z\,\bmod\,x)$ $(A\,\bmod\,B)$는 $A$를 $B$

www.acmicpc.net

전수조사 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

매 줄을 입력받을 line을 선언한 후 test_case에 parse한 결과를 저장합니다. 이 후 매 test_case마다 a,b,c정보를 저장합니다.

📔 풀이과정

조건에 맞는 쌍을 찾기 위해 3중 for loop를 수행해 x,y,z를 찾습니다. 찾았다면 ans를 한 개씩 더해줍니다.

📔 정답출력

매 test_case마다 ans를 출력합니다.


📕 Code

use std::io;
fn main(){
  let mut line = String::new();
  io::stdin().read_line(&mut line).expect("wrong io");
  let test_case = line.trim().parse::<i32>().unwrap();
  for i in 0..test_case{
    let mut ans = 0;
    let mut line = String::new();
    io::stdin().read_line(&mut line).expect("wrong io");
    let numbers: Vec<i64> = line
      .split_whitespace()
      .map(|num| num.parse::<i64>().unwrap())
      .collect();
    let a = numbers[0];
    let b = numbers[1];
    let c = numbers[2];
    for x in 1..a+1{
      for y in 1..b+1{
        for z in 1..c+1{
          if x%y == y%z && y%z == z%x {
            ans+=1;
          }
        }
      }
    }
    println!("{}",ans);
  }
}

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.