链接:https://ac.nowcoder.com/acm/contest/925/A
来源:牛客网

题目描述

目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶、腺嘧啶均是成对出现的。这虽然是一个重大发现,但还不是该病毒的最主要特征,因为这个特征实在太弱了。

为了进一步搞清楚该病毒的特征,CN 疾病控制中心和阿里巴巴集团合作,用科技的力量和程序的思维来解决这个难题。现阿里巴巴特委派你成为 CN 疾病控制中心的 SARS 高级研究员,去研究在这个特征下,可能成为 SARS 病毒的 DNA 序列的个数。更精确地说,你需要统计所有满足下列条件的长度为 n 的字符串的个数:

  1. 字符串仅由 A、T、C、G 组成
  2. A 出现偶数次(也可以不出现)
  3. C 出现偶数次(也可以不出现)

当 n=2 时,所有满足条件的字符串有如下 6个:

TT,TG,GT,GG,AA,CC。

注: 由于这个数可能非常庞大,你只需给出对 10^9+7 取模的结果即可。

输入描述:

多组输入(不超过10组),每行一个整数n:0 < n < 1010510105

输出描述:

对于输入文件中的每一个 n,输出满足条件的字符串的个数对 10^9 +7 取模的结果。
示例1

输入

复制

1
2
100

输出

复制

2
6
113046907 题意:满足题目的序列个数有多少个
思路:我们计算以每个字母结尾的个数有多少个,我们可以分两类((T,G),(A,C)),T,G字母结尾的我们每一位都会翻两倍,A,C字母每隔俩个翻一倍,但是其实我们A,C结尾的我们可以放T,G,T,G结尾也一样,所以
假设 AC[]代表 AC结尾 TG[]代表 TG结尾
AC[n] = AC[n-2]*2 + TG[n-2]*2;
TG[n] =  AC[n-1]*2 +  TG[n-1]*2;
最后我们可以化简出式子等于 (2^(n-1))*(2^(n-1)+1)
因为我们的n特别大,这里我就用上了欧拉降幂
(a^n)%mod = (a^(b%phi(mod)+mod))%mod
#include<bits/stdc++.h>
#define maxn 1000005
#define mod 1000000007
using namespace std;
typedef long long ll;
char str[maxn];
ll big_number(char s[],ll m){
ll num=;
for(int i=;s[i]!='\0';i++){
num=num*+(s[i]-'');
num%=m;
}
return num;
}
ll quick_pow(ll x,ll y){
ll ans=;
while(y){
if(y&) ans=(ans*x)%mod;
x=(x*x)%mod;
y=y/;
}
return ans;
}
int main(){
while(cin>>str)
{
int flag=;
if((str[strlen(str)-]-'')%) flag=;
ll num=big_number(str,mod-);
//cout<<"num:"<<num<<endl;
ll da=quick_pow(,num-+mod-);
//if(flag%2) da=(da*2)%mod;
cout<<(da*(da+))%mod<<"\n";
}
}

吉首大学校赛 A SARS病毒 (欧拉降幂)的更多相关文章

  1. 牛客OI测试赛 F 子序列 组合数学 欧拉降幂公式模板

    链接:https://www.nowcoder.com/acm/contest/181/F来源:牛客网 题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘 ...

  2. 2018 焦作网络赛 G Give Candies ( 欧拉降幂 )

    题目链接 题意 : 给出 N 个糖果.老师按顺序给 1~N 编号的学生分配糖果.每个学生要么不分.要么最少分一个.且由于是按顺序发放.那么对于某个有分到糖果的编号为 i 的学生.则 1~(i-1) 这 ...

  3. 吉首大学2019年程序设计竞赛(重现赛)- A SARS病毒 (矩阵,欧拉降幂)

    题目链接:https://ac.nowcoder.com/acm/contest/992/A 题意:求出长度为n的字符串个数,字符串由A.C.G.T组成,其中A和C必须成对出现. 思路:我们规定:   ...

  4. 2019计蒜之道初赛3 D. 阿里巴巴协助征战SARS(困难)(大数取余+欧拉降幂)

    阿里巴巴协助征战SARS(困难) 33.29% 1000ms 262144K   目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶.腺嘧啶均 ...

  5. 2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂

    2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂 [Problem Description] ​ 已知\(f(n)=3\cdot f(n ...

  6. 2018牛客网暑期ACM多校训练营(第四场) A - Ternary String - [欧拉降幂公式][扩展欧拉定理]

    题目链接:https://www.nowcoder.com/acm/contest/142/A 题目描述 A ternary string is a sequence of digits, where ...

  7. 2019ICPC网赛南京站B题 super_log(欧拉降幂

    https://nanti.jisuanke.com/t/41299 题意:让算a^(a^(a^(...))),一共b个a, (mod p)的结果. 思路:这是个幂塔函数,用欧拉降幂公式递归求解. # ...

  8. 牛客网多校第4场 A.Ternary String 【欧拉降幂】

    题目:戳这里 学习博客:戳这里 欧拉函数的性质: ① N是不为0的整数.φ(1)=1(唯一和1互质的数就是1本身) ② 除了N=2,φ(N)都是偶数. ③ 小于N且与N互质的所有数的和是φ(n)*n/ ...

  9. HDU - 4704 sum 大数取余+欧拉降幂

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submi ...

随机推荐

  1. Linux文件归档工具——tar

    Linux打包压缩命令——tar 一tar工具的介绍 Tar(Tape ARchive,磁带归档的缩写) NAME tar - manual page for tar 1.26 SYNOPSIS ta ...

  2. jdbc 数据库批处理insert操作

    package blob; import java.sql.Connection; import java.sql.PreparedStatement; import jdbc.utils.*; // ...

  3. Delphi 正则表达式之TPerlRegEx

    官方网站: http://www.regular-expressions.info/delphi.html 直接下载: http://www.regular-expressions.info/down ...

  4. [CSP-S模拟测试63]题解

    A.Median 这题的数据生成方式并没有什么规律,所以可以认为是随机数据. 维护一个桶,表示当前K长区间里的值域情况. 并且用变量记录中位数值域上的左侧有多少个数,当区间调整时一并调整桶和这个变量即 ...

  5. Java面试题一览

    Java面试题一览

  6. linux卸载

    centos平台 yum remove xxxrpm包,rpm -e xxxtar包直接删除该文件或者make uninstall xxx

  7. javascript闭包实现缓存小案例

    ​ /* * 闭包实现缓存 * 属性:有个键--值 --->所以可以将缓存数据存放在一个对象中 * 方法:缓存存储 setCache * 缓存的获取 getCache * */ function ...

  8. html5中的拖拽功能

    拖拽元素支持的事件 ondrag 应用于拖拽元素,整个拖拽过程都会调用 ondragstart 应用于拖拽元素,当拖拽开始时调用 ondragleave 应用于拖拽元素,当鼠标离开拖拽元素是调用 on ...

  9. 洛谷 P4178 Tree

    #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #inclu ...

  10. 七牛云关联Windows图床

    1. 注册七牛云 七牛云 地址,需要在这里进行注册 2.完成实名认证 需要上传身份证的正反面以及支付宝做一下认证即可. 首先进入个人中心 然后进行实名认证 由于我已经认证过了,所以显示认证完成,未认证 ...