3
0
paiza×Qiita記事投稿キャンペーン「プログラミング問題をやってみて書いたコードを投稿しよう!」

paizaラーニングレベルアップ問題集の「名刺バインダー管理」を色々な言語でやってみた

Last updated at Posted at 2024-08-23

paiza×Qiita記事投稿キャンペーンということで、paizaラーニングレベルアップ問題集の名刺バインダー管理を色々な言語でやってみました。対象はコードモンスター大図鑑で対応している9言語にPerl、Scala、Go、Swiftを合わせた13言語です。

2024/08/25更新
Javascriptのコードを修正いたしました。


方針

番号$m$の名刺は

\left\lfloor\frac{m-1}{2n}\right\rfloor+1

枚目のファイルにあり、裏面の番号を$m'$とすると、

m+m'=4n\left\lfloor\frac{m-1}{2n}\right\rfloor+2n+1

となります。答えは

m'=2n\times\left(\left\lfloor\frac{m-1}{2n}\right\rfloor\times2+1\right)+1-m

です。


PHP
<?php
	[$n, $m] = explode(" ", fgets(STDIN));
	echo (2 * $n * (intdiv($m - 1, 2 * $n) * 2 + 1) + 1 - $m) . "\n";
?>

Ruby
n, m = gets.split.map(&:to_i)
p 2 * n * ((m - 1) / (2 * n) * 2 + 1) + 1 - m

Java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		sc.close();
		System.out.println(2 * n * ((m - 1) / (2 * n) * 2 + 1) + 1 - m);
	}
}

Python
n, m = map(int, input().split())
print(2 * n * ((m - 1) // (2 * n) * 2 + 1) + 1 - m)

C言語
#include <stdio.h>
int main(void){
	int n, m;
	scanf("%d %d", &n, &m);
	printf("%d\n", 2 * n * ((m - 1) / (2 * n) * 2 + 1) + 1 - m);
	return 0;
}

C#
using System;

class Program
{
	static void Main()
	{
		int[] nm = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
		int n = nm[0];
		int m = nm[1];
		Console.WriteLine(2 * n * ((m - 1) / (2 * n) * 2 + 1) + 1 - m);
	}
}

Javascript
const lines = require("fs").readFileSync("/dev/stdin", "utf8").split("\n");
// 2024-08-25 parseIntからNumberに修正
// const [n, m] = lines[0].split(" ").map(x => parseInt(x, 10));
const [n, m] = lines[0].split(" ").map(Number);
console.log(2 * n * (Math.floor((m - 1) / (2 * n)) * 2 + 1) + 1 - m);

C++
#include <iostream>
using namespace std;

int main(void){
	int n, m;
	cin >> n >> m;
	cout << 2 * n * ((m - 1) / (2 * n) * 2 + 1) + 1 - m << endl;
	return 0;
}

Kotlin
import java.util.*

fun main() {
	val sc = Scanner(System.`in`)
	val n = sc.nextInt()
	val m = sc.nextInt()
	sc.close()
	println(2 * n * ((m - 1) / (2 * n) * 2 + 1) + 1 - m)
}

Perl
my ($n, $m) = split ' ', <STDIN>;
print 2 * $n * (int(($m - 1) / (2 * $n)) * 2 + 1) + 1 - $m, "\n"

Scala
import scala.io.StdIn._

object Main extends App {
	val Array(n, m) = readLine().split(" ").map(_.toInt)
	println(2 * n * (((m - 1) / (2 * n)) * 2 + 1) + 1 - m)
}

Go
package main

import (
	"fmt"
)

func main() {
	var n, m int
	fmt.Scan(&n, &m)
	fmt.Println(2*n*((m-1)/(2*n)*2+1) + 1 - m)
}

Swift
import Foundation

let nm = readLine()!.split(separator: " ").map { Int($0)! }
let n = nm[0]
let m = nm[1]
print(2 * n * ((m - 1) / (2 * n) * 2 + 1) + 1 - m)
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0