链接: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=0;for(int i=0;s[i]!='\0';i++){num=num*10+(s[i]-'0');num%=m;}return num;
}
ll quick_pow(ll x,ll y){ll ans=1;while(y){if(y&1) ans=(ans*x)%mod;x=(x*x)%mod;y=y/2;}return ans;
}
int main(){while(cin>>str){int flag=0;if((str[strlen(str)-1]-'0')%2) flag=1;ll num=big_number(str,mod-1); //cout<<"num:"<<num<<endl;ll da=quick_pow(2,num-1+mod-1);//if(flag%2) da=(da*2)%mod;cout<<(da*(da+1))%mod<<"\n";}
}

转载于:https://www.cnblogs.com/Lis-/p/11072032.html

吉首大学校赛 A SARS病毒 (欧拉降幂)相关推荐

  1. 欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常

    解题思路: 首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子: F(n)=15[(1+52)n−(1−52)n]F(n) = {1\over\sqrt5} ...

  2. 2019年ICPC银川区域赛 Easy Problem(简单莫比乌斯函数 + 欧拉降幂)

    Easy Problem ∑a1=1m∑a2=1m∑a3=1m⋯∑an−1m∑anm[gcd(a1,a2,a3,-,an−1,an)==d](a1,a2,a3,-,an−1,an)k=dkd∑a1=1 ...

  3. 数论学习六之——欧拉定理(欧拉降幂)

    我们现在就来学习数论四大定理中的最后一个定理,欧拉定理. 首先我们先介绍一下什么是欧拉函数,欧拉函数 φ ( n ) \varphi(n) φ(n)求的是不超过n且与n互素的正整数的个数,例如: φ ...

  4. 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和

    [2021牛客寒假第五场]C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和 前置技能 题意 思路 Code(715MS) 传送门: https://ac.nowcoder.com/ac ...

  5. 欧拉降幂及其扩展欧拉降幂

    欧拉降幂: 从公式来看,需要使用快速幂运算和欧拉函数 #include<bits/stdc++.h>using namespace std; typedef __int64 LL;cons ...

  6. 欧拉降幂(Euler_Power_Formula)

    一.欧拉降幂公式 二.证明 欧拉降幂公式与证明 三.例题 https://ac.nowcoder.com/acm/contest/330/E 四.参考文章 https://blog.csdn.net/ ...

  7. 2019ICPC(南京) - super_log(欧拉降幂)

    题目链接:点击查看 题目大意:求(a^a^a^a....^a)%mod,其中有b个a 题目分析:一道数论题,被我们做成了模拟题..首先因为涉及到指数并且指数都还比较大,所以需要知道一个降幂公式: 我们 ...

  8. 数学--数论--广义欧拉降幂(模板)

    未使用欧拉筛: 适用于较少次数计算的欧拉降幂. #include <bits/stdc++.h> #define ll long long using namespace std; ll ...

  9. 数学--数论--欧拉降幂--P5091 欧拉定理

    题目背景 出题人也想写有趣的题面,可惜并没有能力. 题目描述 给你三个正整数,a,m,ba,m,ba,m,b,你需要求:ab mod ma^b \bmod mabmodm 输入格式 一行三个整数,a, ...

  10. 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)

    一般大佬会给你证明,而菜鸟会教你怎么使用. 先摆上公式: ab≡{abmodϕ(p)gcd(a,p)=1abgcd(a,p)≠1,b<ϕ(p)abmodϕ(p)+ϕ(p)gcd(a,p)≠1,b ...

最新文章

  1. Eclipse下Tomcat插件的安装
  2. 数据库死锁查询及处理
  3. PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
  4. ImageView宽度填满屏幕,高度自适应
  5. python基础学习笔记——方法返回值
  6. CSS 普通流 和 行格式化上下文 IFC
  7. 自定义数据格式的矢量地图实现
  8. 如何建立有效的数据挖掘步骤
  9. js中substr,substring,indexOf,lastIndexOf的用法小结
  10. 【C++】(三) MFC入门教程 (VS 2005)
  11. python入门——快乐的数字
  12. ClickHouse安装部署
  13. 第一次尝试miniprogram-automator
  14. 总结了一些微信小程序推广方法
  15. 图形渲染——伽马矫正
  16. 微信小程序学习第8天——自定义组件的数据监听器Observer小案例
  17. 微博html5版什么手机,搜狐微博推出全新手机HTML5触屏版
  18. BI神器Power Query(15)-- PQ制作时间维度表(4)
  19. https server
  20. 小组项目具体分工情况(Web.ui相关)

热门文章

  1. Raisecom 交换机防止ARP欺骗攻击及防止多个DHCP服务器方法
  2. 3.cesium雨、雪、雾天气场景效果
  3. 英语语法:词法之动名词
  4. android mp4 画面裁剪,说说Android的视频裁剪(三)
  5. LeetCode学习资料和刷题顺序
  6. 共享计算机桌面需要密码,win10系统访问共享文件需要密码的解决方法
  7. Python 制作迷宫游戏(一)——地图
  8. SQL IF语句的使用
  9. 下载维基百科wikipedia!
  10. 酒店客房管理系统总结