比赛 进阶指南第0章测试 评测结果 AAAAAAAAAAAAAAAAAAAAAAAAA
题目名称 魔法部落 最终得分 100
用户昵称 ychyyx 运行时间 0.557 s
代码语言 C++ 内存使用 3.85 MiB
提交时间 2026-03-14 09:53:52
显示代码纯文本
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
ll n;
ll sum=1;
const ll p=1e9+7;
ll qpow(ll a,int n){
    ll res=a,sum=1;
    while(n){
        if(n&1)
            sum=(sum*res)%p;
        res=(res*res)%p;
        n>>=1;
    }
    return sum;
}
int main(){
    freopen("magic.in","r",stdin);
    freopen("magic.out","w",stdout);
    scanf("%lld",&n);
    ll s=0;
    for(int i=1;i<=1000;i++){
        s=(s+qpow(3,i))%p;
    }
    int k=n%1000;
    for(int i=1;i<=k;i++)
        sum=(sum+qpow(3,i))%p;
    s=(s*qpow(3,k))%p;                        
    n-=k;
    while(n){
        sum=(sum+s)%p;
        s=(s*qpow(3,1000))%p;
        n-=1000;
    }
    printf("%lld",sum);
    return 0;
}