LoginSignup
0
0

【ABC336】FortranでA,B,C問題

Posted at

目次

A - Long Loong

問題

正の整数 X について、レベル X の 龍文字列 とは、1 個の L, X 個の o, 1 個の n,1 個の g をこの順に並べた文字列です。
正の整数 N が与えられるので、レベル N の龍文字列を出力してください。

制約

  1. $1≤N≤2024$
  2. N は整数

詳細はこちらです。

解説

o の部分のみdo文で N 回分出力します。

なお龍文字列は改行せずに出力する必要があります。
write文advance='no'をつけ、改行を行わない様にします。

プログラム例

program abc336a
    !N:整数
    implicit none
    integer N, i

    !入力
    read (*, *) N

    !結果の出力
    write (*, '(a1)', advance='no') "L"
    do i = 1, N
        write (*, '(a1)', advance='no') "o"
    end do
    write (*, '(a2)') "ng"
end program abc336a

B - CTZ

問題

正の整数 N に対して、N を 2 進表記したときに 末尾 に連続する 0 の個数を出力してください。

制約

  1. $1≤N≤10^9$
  2. N は整数

詳細はこちらです。

解説

btest(i,pos)を用いて i 桁目が 1、0のどちらであるかを判定し、連続する 0 の個数を求めます。

プログラム例

program abc336b
    !N  :整数N
    !cnt:末尾に連続する0の数
    implicit none
    integer N
    integer cnt, i

    !入力
    read (*, *) N
    cnt = 0
    do i = 0, 40
        if (btest(N, i)) then
            exit
        else
            cnt = cnt + 1
        end if
    end do

    !結果の出力
    write (*, *) cnt
end program abc336b

C - Even Digits

問題

非負整数 n がn を 10 進法で表したときに、偶数の数字(0,2,4,6,8) のみで表せる時、n を 良い整数 と呼びます。
整数 N が与えられるので。良い整数のうち小さい方から N 番目の整数を求めてください。

制約

  1. $1≤N≤10^{12}$
  2. N は整数

詳細はこちらです。

解説

使ってもよい数字は (0,2,4,6,8)の5種類なので、5進数に置き換えることができます。
N を1桁目から5進数に変換して出力します。

プログラム例

program abc335c
    !N:取り出したい良い整数の番号
    !Ans:N番目の良い整数
    implicit none
    integer(8) N, Ans(100)
    integer i, j, tmp

    !読み込み
    read (*, *) N
    N = N - 1; Ans = 0

    !良い整数の算定
    if (N == -1) then !N=1の場合
        write (*, '(i0)', advance='no') 0
        stop
    else !N=1より大きい
        i = 1; tmp = 5
        do
            Ans(i) = mod(n, tmp)
            N = N/5
            if (N == 0) exit
            i = i + 1
        end do
    end if

    !結果の出力
    do j = i, 1, -1
        write (*, '(i0)', advance='no') Ans(j)*2
    end do
end program abc335c
0
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
0
0