B. AND 0, Sum Big | #716 Div.2
3953 ワード
https://codeforces.com/contest/1514/problem/A
1秒、256 MBメモリ
input : t (1≤t≤10) n k (1≤n≤105, 1≤k≤20). output : For each test case, print the number of arrays satisfying the conditions. Since the answer can be very large, print its remainder when divided by 109+7.
各テストケースに条件を満たす答えを出力します.数量が多いので、109+7の残りの部分を出力してください. 条件: Given two integers n and k, count the number of arrays of length n such that: all its elements are integers between 0 and 2k−1 (inclusive);
the bitwise AND of all its elements is 0;
the sum of its elements is as large as possible.
nとkの2つの数字を受け取ると、可能な配列数を計算します.
すべての要素は0~2 k~1の値です.
すべての要素に対してAND演算を行う場合、結果は0でなければなりません.
すべての要素の合計はできるだけ大きくしなければなりません.
AND演算
1秒、256 MBメモリ
input :
各テストケースに条件を満たす答えを出力します.数量が多いので、109+7の残りの部分を出力してください.
the bitwise AND of all its elements is 0;
the sum of its elements is as large as possible.
nとkの2つの数字を受け取ると、可能な配列数を計算します.
すべての要素は0~2 k~1の値です.
すべての要素に対してAND演算を行う場合、結果は0でなければなりません.
すべての要素の合計はできるだけ大きくしなければなりません.
AND演算
この演算の結果はゼロにする必要があります.この意味は少なくとも0を持たなければならないか、または他の2つの数字で0を作成することができる.
最低価格
最低価格を維持するために、0 n−1からなる配列を作成することができる.
また、この値を保持して実行を続行する必要があります.
境遇
可能な数字はどれらがありますか.
配列中の数字はいずれもkビット内のバイナリで表すことができる.
そして私が初めて思ったことです.
0, n - 1
1, n - 2
...
それ以外にも、他の状況があります.
多くの数字に0(ビット値)があるので、演算でマージできます.
したがって,0をどのように一定に保つかがこの問題の解決策である.
私たちが持つことができる数字はn個です.
これらの数字はkビットを有する.
ビットの位置
各ビットの位置で、0を選択した位置は?
n個です.
4桁の数字.
n個持っています.
_
...
これらのスペースの中から1つを選ぶことができるのでnです
ビット数で作るので、k回繰り返します.import sys
import math
t = int(sys.stdin.readline())
for _ in range(t):
n, k = map(int, sys.stdin.readline().split())
ans = 1
for i in range(k):
ans = (ans * n) % int(math.pow(10, 9) + 7)
print(ans)
Reference
この問題について(B. AND 0, Sum Big | #716 Div.2), 我々は、より多くの情報をここで見つけました
https://velog.io/@jsin2475/B.-AND-0-Sum-Big-716-Div.2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
最低価格を維持するために、0 n−1からなる配列を作成することができる.
また、この値を保持して実行を続行する必要があります.
境遇
可能な数字はどれらがありますか.
配列中の数字はいずれもkビット内のバイナリで表すことができる.
そして私が初めて思ったことです.
0, n - 1
1, n - 2
...
それ以外にも、他の状況があります.
多くの数字に0(ビット値)があるので、演算でマージできます.
したがって,0をどのように一定に保つかがこの問題の解決策である.
私たちが持つことができる数字はn個です.
これらの数字はkビットを有する.
ビットの位置
各ビットの位置で、0を選択した位置は?
n個です.
4桁の数字.
n個持っています.
_
...
これらのスペースの中から1つを選ぶことができるのでnです
ビット数で作るので、k回繰り返します.import sys
import math
t = int(sys.stdin.readline())
for _ in range(t):
n, k = map(int, sys.stdin.readline().split())
ans = 1
for i in range(k):
ans = (ans * n) % int(math.pow(10, 9) + 7)
print(ans)
Reference
この問題について(B. AND 0, Sum Big | #716 Div.2), 我々は、より多くの情報をここで見つけました
https://velog.io/@jsin2475/B.-AND-0-Sum-Big-716-Div.2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
各ビットの位置で、0を選択した位置は?
n個です.
4桁の数字.
n個持っています.
_
...
これらのスペースの中から1つを選ぶことができるのでnです
ビット数で作るので、k回繰り返します.
import sys
import math
t = int(sys.stdin.readline())
for _ in range(t):
n, k = map(int, sys.stdin.readline().split())
ans = 1
for i in range(k):
ans = (ans * n) % int(math.pow(10, 9) + 7)
print(ans)
Reference
この問題について(B. AND 0, Sum Big | #716 Div.2), 我々は、より多くの情報をここで見つけました https://velog.io/@jsin2475/B.-AND-0-Sum-Big-716-Div.2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol