luoguP5035金坷垃

怎么说呢

第一道蓝题祭(。。。大概其实是橙题

 

(毕竟是蓝的,记录一下【噗

emmmm

题面还比较好理解吧

只要最后剩下的深度是1就合格了

我们可以倒着推

能变成深度1需要前一个深度是2

并且变成2之前1不能被用过

这样的话2是被4推出来的

当我们一步步推下去

发现

这不就是一道快速幂嘛!

输入k

输出2的k-1次幂就是结果了

不过要注意一下数据范围

我一开始开的int,于是20分

改成long long就过了

上代码:

#include<cstdio>
using namespace std;
const int mod=123456789;//取模别忘了
long long ksm(long long n,long long k){//不开long long见祖宗
    long long a=1;
    while(k){
        if(k&1)a=a*n%mod;
        n=n*n%mod;
        k>>=1;
    }
    return a%mod;
}
int main(){
    long long k;
    scanf("%lld",&k);
    printf("%lld",ksm(2,k-1));
    return 0;
}

行了。

您们应该都比我强,所以请切真正的蓝题吧

(这篇题解只供娱乐。。。

posted @ 2018-11-18 15:30  ./seven  阅读(181)  评论(1编辑  收藏  举报