10進数→N進数へ変換

#お題

10 進数で表された整数 N, M が与えられます。
N を M 進数に変換して出力してください。

 

 


#入力

N M



・ 1 行で整数 N, M が与えられます。

 

 

 


#出力

N M



・ 1 行で整数 N, M が与えられます。

 

 

 


#コード

a,b = map(int,input().split())
ans = ""
tmp = a

while tmp >= b:
    ans = str(tmp % b) + ans
    tmp //=  b
    
ans = str(tmp % b) + ans

print(ans)

 

 

 


#参考

<別解>

N, M = map(int, input().split())

base = ""
while N > 0:
    base += str(N % M)
    N //= M

print(base[::-1])
  • N が自然数であれば、M で割った余りを取ると、M 進数に変換した際の M^0 の桁を求めることができます。
  • M^0 の位を求めたら N を M で割り、もう一度同じ操作を繰り返すと M^1 の位を求めることができます。
  • これを繰り返していくことで N を M 進数に変換することができました。

10 進数から 2 進数に変換

#お題

10 進数で表された整数 N が与えられます。
N を 2 進数に変換して出力してください。

 


#入力

N

・ 1 行で整数 N が与えられます。

 

 

 


#出力

N を 2 進数に変換して出力してください。

 

 


#コード

a = int(input())
b = format(a,"b")
print(b)

 

 

 


#参考

  • Python の場合、組み込み関数である bin() を使用することで、10 進数を 2 進数に変換することができます。
  • 変換後の最初の 2 文字は 2 進数を表す 0b なので出力する際には除去する必要があります。
N = int(input())

print(bin(N)[2:])

任意の数で何回割れる?

#お題

整数 N, M が与えられます。
N が何回 M で割れるかを求め、出力してください。

 


#入力

N M

・ 1 行で整数 N, M が与えられます。

 


#出力

N が何回 M で割れるかを求め、出力してください。

 

 


#コード

n,m = map(int,input().split())

cnt = 0
ans = n
while True:
    if ans % m == 0:
        ans //= m
        cnt += 1
    else:
        break
print(cnt)

 

 

 


#参考

N, M = map(int, input().split())

div_count = 0
while True:
    if N % M == 0:
        N //= M
        div_count += 1
    else:
        break

print(div_count)
  • Python の場合、While True: と記述することで永遠にループを回すことができます。
  • N が M で割れなくなった場合に breakすることで無限ループからブレイクするようにしましょう。

2 で何回割れる?

#お題

整数 N が与えられます。
N が何回 2 で割れるかを求め、出力してください。

 

 


#入力

N



・ 1 行で整数 N が与えられます。

 

 

 


#出力

 

N が何回 2 で割れるかを求め、出力してください。

 

 


#コード

a = int(input())
cnt = 0
ans = a
while ans % 2 == 0:
    ans = ans / 2
    cnt += 1
print(cnt)

 

 

 


#参考

<別解>

N = int(input())

div_count = 0
while True:
    if N % 2 == 0:
        N //= 2
        div_count += 1
    else:
        break

print(div_count)
  • Python の場合、While True: と記述することで永遠にループを回すことができます。
  • N が 2 で割れなくなった場合に breakすることで無限ループからブレイクするようにしましょう。

2 で何回割れる?

#お題

整数 N が与えられます。
N が何回 2 で割れるかを求め、出力してください。

 

 


#入力

N



・ 1 行で整数 N が与えられます。

 

 

 


#出力

 

N が何回 2 で割れるかを求め、出力してください。

 

 


#コード

a = int(input())
cnt = 0
ans = a
while ans % 2 == 0:
    ans = ans / 2
    cnt += 1
print(cnt)

 

 

 


#参考

<別解>

N = int(input())

div_count = 0
while True:
    if N % 2 == 0:
        N //= 2
        div_count += 1
    else:
        break

print(div_count)
  • Python の場合、While True: と記述することで永遠にループを回すことができます。
  • N が 2 で割れなくなった場合に breakすることで無限ループからブレイクするようにしましょう。

カウント変数を使った計算

#お題

N 個の整数 M_1, M_2, ..., M_N があります。
i 番目の M を M_i とするとき、M_i * i を改行区切りで出力してください。
例えば、M_5 が 3 の場合、3 * 5 = 15 となります。

 

 


#入力

N
M_1 M_2 ... M_N



・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 M_1, M_2, ..., M_N が与えられます。

 

 

 


#出力

i 番目の M を M_i とするとき、M_i * i を改行区切りで出力してください。

M_1 * 1
M_2 * 2
...
M_N * N

 


#コード

input()
a = [int(x) for x in input().split()]

cnt = 1
for i in a:
    print(i * cnt)
    cnt += 1

 


#参考

  • M_i * i をおこなう際、配列は 0 番目から数えることに注意して計算しましょう。
N = int(input())
M = list(map(int, input().split()))

for i in range(N):
    print(M[i] * (i + 1))

各桁の和

#お題

10 進数で表された整数 N が与えられます。
整数 N の各桁の和を計算し、出力してください。

 

 


#入力

N

・ 1 行で整数 N が与えられます。

 

 

 


#出力

整数 N の各桁の和を計算し、出力してください。

 

 

 


#コード

a = [int(x) for x in list(input())]
ans = 0
for i in a:
    ans += i
print(ans)

 

 

 


#参考

N = int(input())

digit_sum = 0
while N > 0:
    digit_sum += N % 10
    N //= 10

print(digit_sum)
  • N が自然数であれば、10 で割った余りを取ると、一の位の桁を求めることができます。
  • 一の位を求めたら N を 10 で割り、もう一度同じ操作を繰り返すと、一の位は切り捨てられ、十の位を求めることができます。
  • これを繰り返していくことで桁和を求めることができました。