링크 https://www.acmicpc.net/problem/1271
문제 갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다.
그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다.
프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.
한 생명체에게 얼마씩 돈을 줄 수 있는가?
또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?
입력 첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 10의 1000승, m과 n은 10진수 정수)
출력 첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력한다.

 

간단한 나눗셈 문제 같지만 사실 숫자 타입을 묻는 문제다. 10의 1000승은 Double을 넘는 범위로, BigInteger로 처리해야 한다. 파이썬은 int()에서 타입을 자동으로 처리하지만 코틀린과 node.js는 그렇지 않다.

 

 

Python 3

input = input().split()
n = int(input[0])
m = int(input[1])
print(n // m)
print(n % m)
n, m = map(int, input().split())
print(n // m)
print(n % m)

 

Kotlin (JVM)

import java.util.Scanner

fun main(args: Array<String>) {
    val sc: Scanner = Scanner(System.`in`)
    val n = sc.nextBigInteger()
    val m = sc.nextBigInteger()
    println(n / m)
    println(n % m)
}
fun main() {
    val input = readLine()?.split(" ")
    if (!input.isNullOrEmpty()) {
        val n = input[0].toBigInteger()
        val m = input[1].toBigInteger()
        println(n / m)
        println(n % m)
    }
}

 

node.js

const fs = require("fs");
const input = fs.readFileSync('/dev/stdin').toString().split(" ");
var n = BigInt(input[0]);
var m = BigInt(input[1]);
var quotient = (n / m).toString();
var remainder = (n % m).toString();
console.log(quotient);
console.log(remainder);
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on("line", function(line) {
    input = line.split(" ");
    let n = BigInt(input[0]);
    let m = BigInt(input[1]);
    let quotient = (n / m).toString();
    let remainder = (n % m).toString();
    console.log(quotient);
    console.log(remainder);
}).on("close", function() {
    process.exit();
});

 

+ Recent posts