P2012 拯救世界2

题目背景

前三题太弱了嘛,在看看最后一道渣题。

题目描述

经过 12 年的韬光养晦,世界末日再次来临(众人:什么鬼逻辑......)。

这次,小a 和 uim 已经做好了一切准备,顺利召唤出了 kkksc03 大神和 lzn 大神。然而,kkksc03 和 lzn 告诉他们,这次世界末日太过强大,他们已无法挽回,只有创世神 JOHNKRAM 能拯救这个世界。

然而,创世神 JOHNKRAM 是无法召唤的,除非把整个宇宙按照 𝐸=𝑚𝑐2E=mc2 全部转化成能量。因为根据 C_SUNSHINE 大神随手推算出的召唤定律,至少需要被召唤者百万亿分之一的能量才能召唤(众人:什么鬼定律......)。


当然,还有一种方法,那就是找出创世神 JOHNKRAM 的基因序列。普通人基因序列由 A、C、G、T 构成,创世神 JOHNKRAM 不是普通人(是个胖纸),基因序列也不一样。除了这四种普通的,还有乾、兑、离、震、巽、坎、艮、坤八种特殊基因。其中乾、坎、艮、震属阳,只能出现奇数次;坤、兑、离、巽属阴,只能出现偶数次。

现在只知道创世神 JOHNKRAM 的基因序列共有 𝑛n 位,其他一概不知。小a 和 uim 想知道他们最多要试多少次,才能召唤出创世神 JOHNKRAM 。这个数字有可能很大,所以输出答案模 109109 即可(C_SUNSHINE 的忠告:远离八卦,远离肥胖)。

输入格式

输入由多组数据组成,每组数据一行,输入一个数 𝑛n,输入以 00 结束。

输出格式

对于每组数据,输出一行一个整数,表示答案对 109109 取模的结果。

输入输出样例

输入 #1

3
10
20
6
0

输出 #1

0
225116160
53238784
7680

说明/提示

【数据范围】
对于 10%10% 的数据:1≤𝑛<251≤n<25,数据不超过 1010 组;
对于 50%50% 的数据:1≤𝑛<2311≤n<231,数据不超过 103103 组;
对于 100%100% 的数据:1≤𝑛<2631≤n<263,数据不超过 2×1052×105 组。

【样例解释】
第一个数据解释:
只有 33 位,没有合法方案,故答案为 00。

【备注】

附件:聊天记录(纯粹扯淡)

JOHNKRAM 8:50:33

喂喂,坑神之赛2可以开始了吧

C_SUNSHINE 8:50:34

[自动回复]恩!

JOHNKRAM 8:51:12

我准备把最后一题数据从 5050 放到 263263。

C_SUNSHINE 8:51:12

[自动回复]恩!

JOHNKRAM 8:51:45

你同意喽?

C_SUNSHINE 8:51:46

[自动回复]恩!

C_SUNSHINE 11:58:50

你疯了吗?!

JOHNKRAM 11:58:52

[自动回复]您好,我现在有事不在,一会再和您联系。 不再提醒

Code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
#define ll long long
using namespace std;
const ll b[5]={0,0,0,0,24},T=20000,N=T+10,P=1e9,Phi=4e8;
ll n,pw2[N],pw3[N],Pw2[N],Pw3[N];
ll read(){
	ll x=0,f=1;char c=getchar();
	while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}
	while(isdigit(c))x=(x<<1)+(x<<3)+c-48,c=getchar();
	return x*f;
}
void print(ll x)
{if(x>9)print(x/10);putchar(x%10+48);return;}
ll G4(ll n)
{n%=Phi;return Pw2[n/T]*Pw2[n/T]%P*pw2[n%T]%P*pw2[n%T]%P;}
ll G8(ll n)
{n%=Phi;return Pw2[n/T]*pw2[n%T]%P*G4(n)%P;}
ll G12(ll n)
{n%=Phi;return Pw3[n/T]*pw3[n%T]%P*G4(n)%P;}
signed main()
{
	pw2[0]=pw3[0]=Pw2[0]=Pw3[0]=1;
	for(ll i=1;i<=T;i++)
		pw2[i]=pw2[i-1]*2ll%P,pw3[i]=pw3[i-1]*3ll%P;
	for(ll i=1;i<T;i++)
		Pw2[i]=Pw2[i-1]*pw2[T]%P,Pw3[i]=Pw3[i-1]*pw3[T]%P;
	while(1){
		n=read();
		if(!n)break;
		if(n<=4){print(b[n]),putchar('\n');continue;}
		ll ans=81ll*G12(n-4);
		ans=ans-G8(n-2);
		ans=ans+6ll*G4(n-4);
		ans=ans+((n&1)?-1:1)*G4(n-4);
		print((ans%P+P)%P);
		putchar('\n'); 
	}
	return 0;
}

相关推荐

  1. P2012 拯救世界2

    2024-06-07 12:14:03       30 阅读
  2. 【Python】洛谷P7614 [COCI2011-2012#2] NAJBOLJIH 5

    2024-06-07 12:14:03       53 阅读
  3. 洛谷 P1506 拯救 oibh 总部

    2024-06-07 12:14:03       25 阅读
  4. P1873 [COCI 2011/2012 #5] EKO / 砍树

    2024-06-07 12:14:03       38 阅读
  5. <span style='color:red;'>P</span><span style='color:red;'>2</span><span style='color:red;'>P</span>应用

    P2P应用

    2024-06-07 12:14:03      67 阅读
  6. p2p原理

    2024-06-07 12:14:03       43 阅读
  7. 【<span style='color:red;'>P</span><span style='color:red;'>2</span><span style='color:red;'>P</span>】

    P2P

    2024-06-07 12:14:03      42 阅读
  8. P8753 [蓝桥杯 2021 省 AB2] 小平方 Python

    2024-06-07 12:14:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 12:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 12:14:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 12:14:03       82 阅读
  4. Python语言-面向对象

    2024-06-07 12:14:03       91 阅读

热门阅读

  1. C#软件搬家功能的实现

    2024-06-07 12:14:03       29 阅读
  2. HTML5 视频 Vedio 标签详解

    2024-06-07 12:14:03       28 阅读
  3. 【第二篇】SpringSecurity源码详解

    2024-06-07 12:14:03       32 阅读
  4. npm上传提示:413 Request Entity Too Large

    2024-06-07 12:14:03       34 阅读
  5. 【二叉树算法题记录】669. 修剪二叉搜索树

    2024-06-07 12:14:03       29 阅读
  6. 游戏心理学Day06

    2024-06-07 12:14:03       32 阅读
  7. 在CentOS 7上查看和管理内存使用情况

    2024-06-07 12:14:03       26 阅读
  8. 【回溯算法 1】全排列(medium)(每日一题)

    2024-06-07 12:14:03       34 阅读