「CF630C」ラッキーナンバー

より良い読書体験

ポータル

Portal1:Codeforces

Portal2:Luogu

説明

IT市の税務署の新しい建物内のすべての事業所数は幸運の数字を持っています。

幸運な数は、数字から成る数である\(7 \)\(8 \)のみ。ドアプレートがより長くない数保持できることを考えると税務署の新しい建物に事務所の最大数を探す\(N \)の数字を。

入力

入力の唯一のラインは1つの整数含ま\(nは(1 \ルN \ル55)\) -ドアプレートが保持できる数の最大長。

出力

出力1つの整数-オフィスの最大数を、より長くないユニークな幸運の番号を持つことができるよりも、\(N \)の数字。

サンプル入力

2

サンプル出力

6

解決

我々は、対象に構成された\(1つの\ SIM N \)からのビット(7,8 \)\の番号の数。法律のために見てみましょう:

メジアン\(1 \):YES \(7,8 \) \(2 \回2 ^ 0 = 2 \) 種。

メジアン\(2 \):YES \(77、78、87、88 \) \(2 \回2 ^ 1 = 4 \) 種。

メジアン\(3 \):YES \(777、778、787、788、877、878、887、888 \)\(2 \回2 ^ 2 = 8 \) 種。

\(\ cdots \ cdots \)

したがって、ビットの数である(\ \ N-)総数がある\(2 \ 2 ^ {n倍- 1} \)

次いでメジアン\(1 \ SIM N \)は、の総数であります

\ [\開始{整列} \和は^ {N} _ {i = 1} {2 \回2 ^ {I - 1}}&= 2 \回\和^ {N} _ {i = 1} {2 ^ {I - 1}} \\\\&= 2 \倍(2 ^ {N} - 2)\\\\&= 2 ^ {N + 1} - 2 \端{整列} \]

だから、解決しました。

コード

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>

using namespace std;

typedef long long LL;
LL n;
inline LL power(LL x, LL y) {//求x的y次方
    LL ret = 1;
    for (LL i = 1; i <= y; i++)
        ret *= x;
    return ret;
}
int main() {
    scanf("%lld", &n);
    printf("%lld\n", power(2, n + 1) - 2);//推出来的公式
    return 0;
}

おすすめ

転載: www.cnblogs.com/shenxiaohuang/p/11574546.html