問題一覧 >
通常問題
No.462 6日知らずのコンピュータ
レベル :
/ 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ :
/
解いたユーザー数 144
作問者 :
tatuyan_edson
/ テスター :
はむこ
問題文最終更新日: 2017-06-25 01:24:07
問題文
1日2日と指折り数えるとき、吝嗇家は握った手を開くのが惜しくて、6日目を数えられないそうです。このことから俗に、吝嗇家のことを「6日知らず」と言ったというお話が現代にも落語などで伝わっています。
新しく出来たコンピュータはビットを用いた2進数で非負整数を表します。
例えば、の場合、はですし、はです。
このコンピュータは「6日知らず」で、数を順に表していく時、いずれか1ビットずつ立てていって表すのですが、一度1にしたビットをに戻すことを嫌います。このため、このコンピュータが表せる数は、から始まりで終わる、項の非負整数列となります。例えば、の場合、という数列が表せる数列の一例です。一方、同じであっても、という数列は表せません。
今、この「6日知らず」のコンピュータを使って個の非負整数を表したいとします。〜のすべてを含み、「6日知らず」のコンピュータで表せるような項の非負整数列は一体何通りあるか求めるプログラムを作成してください。但し、の場合は、全ての数列が条件を満たします。答えはとても大きくなることがあるので、で割った剰余を出力してください。なお、表すことが出来ない場合は通りとします。
入力
...
1行目には、整数でとが半角空白を区切りとして与えられます。、
2行目には、半角空白を区切りとして個の非負整数が与えられ、これが順にを表します。この値はいずれも0以上以下であり、同じ値が複数含まれることはありません。
である入力の場合、2行目の入力がない点に注意してください。
出力
出力は1行のみで、「6日知らず」のコンピュータで表せるような項の非負整数列は一体何通りあるか、で割った剰余を整数値で出力してください。
サンプル
サンプル1
入力
4 2
2 11
出力
2
との2通りの数列が考えられます。
サンプル2
入力
10 3
5 1 3
出力
0
のすべてを含んでいて、6日知らずのコンピュータで表せるような数列は存在しません。
サンプル3
入力
3 0
出力
6
なので、表せる全ての数列を考えます。
の、全6通りが存在します。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。