G - Plant

本文介绍了一个有趣的数学问题:一种特殊三角形植物每年分裂生长的规律,并提供了一种使用快速幂运算来高效计算任意年份朝上三角形植物数量的方法。

G - Plant
Crawling in process...

Description

Dwarfs have planted a very interesting plant, which is a triangle directed "upwards". This plant has an amusing feature. After one year a triangle plant directed "upwards" divides into four triangle plants: three of them will point "upwards" and one will point "downwards". After another year, each triangle plant divides into four triangle plants: three of them will be directed in the same direction as the parent plant, and one of them will be directed in the opposite direction. Then each year the process repeats. The figure below illustrates this process.

Help the dwarfs find out how many triangle plants that point "upwards" will be in n years.

Input

The first line contains a single integer n(0 ≤ n ≤ 1018) — the number of full years when the plant grew.

Please do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use cincout streams or the %I64dspecifier.

Output

Print a single integer — the remainder of dividing the number of plants that will point "upwards" in n years by 1000000007(109 + 7).

Sample Input

Input
1
Output
3
Input
2
Output
10

Hint

The first test sample corresponds to the second triangle on the figure in the statement. The second test sample corresponds to the third one.


题意:求出朝上的三角的个数。。。。

思路:1,1+2,1+2+3+4,1+2+3+4+5+6+7+8.。。。。。以此类推,第n个就为(2^n+1)*(2^(n-1))%mod......快速幂一发即可。。。

下面附上代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define mod 1000000007
using namespace std;
typedef long long ll;
ll Quickmod(ll a,ll b,ll c)
{
	ll ans=1;
	a=a%c;
	while(b)
	{
		if(b&1)
			ans=(ans*a)%c;
		b>>=1;
		a=(a*a)%c;
	}
	return ans;
}
int main()
{
	ll n;
	while(cin>>n)
	{
		if(n==0) puts("1");
		else
		{
			ll res=((Quickmod(2,n,mod)+1)%mod)*(Quickmod(2,n-1,mod)%mod);
			printf("%lld\n",res%mod);
		}
	}
}







<think>我们面对的任务是构建用于植物食性分析的本地条形码数据库,并进行trnL(UAA)g-h基因片段比对。以下是步骤: 1. **获取参考序列**: 从公共数据库(如GenBank、BOLD)下载trnL(UAA)g-h基因片段的参考序列。使用关键词如“trnL(UAA) g-h region”、“chloroplast trnL”进行搜索,并筛选出高质量的植物序列。 2. **构建本地数据库**: 将下载的序列整理成FASTA格式,每个序列包含物种名和唯一标识符。使用数据库管理工具(如SQLite、MySQL)或序列管理软件(如Geneious、CLC Genomics Workbench)构建可查询的数据库。 3. **样本处理与测序**: 从环境样本(如粪便)提取DNA,使用通用引物扩增trnL(UAA)g-h片段(引物示例:g:5'-GGGCAATCCTGAGCCAA-3';h:5'-CCATTGAGTCTCTGCACCTATC-3')。进行高通量测序(如Illumina MiSeq)。 4. **序列预处理**: 对原始测序数据进行质量控制(如使用FastQC),去除低质量序列和接头(使用Trimmomatic或Cutadapt)。合并双端读序(如使用FLASH)。 5. **序列比对与分类**: 使用比对工具(如BLAST+)将处理后的序列与本地数据库进行比对。设置合适的相似度阈值(如97%)进行物种鉴定。命令示例: ```bash makeblastdb -in plant_trnL_db.fasta -dbtype nucl blastn -query cleaned_sequences.fasta -db plant_trnL_db.fasta -out results.txt -outfmt 6 -evalue 1e-5 ``` 6. **结果分析**: 解析BLAST结果,统计每个样本中植物种类的出现频率。使用R或Python脚本可视化物种组成。 注意事项: - 引物选择需覆盖目标植物类群。 - 数据库需定期更新以纳入新物种。 - 验证:加入阴性对照和已知样本以评估准确性。 §§相关问题§§: 1. 如何优化trnL(UAA)g-h引物以提高植物物种鉴定成功率? 2. 有哪些适合trnL基因片段比对的生物信息学工具? 3. 如何评估本地条形码数据库在植物食性分析中的准确性?</think>### 构建植物本地条形码数据库及trnL基因比对方法 **1. 获取trnL(UAA)g-h参考序列** 从公共数据库(NCBI GenBank、BOLD Systems)下载目标植物的叶绿体trnL(UAA)g-h基因序列。使用关键词组合检索: `("trnL"[Gene Name] AND "g-h"[Region] AND chloroplast[Filter])`。筛选高质量序列(长度>450bp,注释完整),保存为FASTA格式。示例代码下载序列: ```python from Bio import Entrez Entrez.email = "your_email@example.com" handle = Entrez.esearch(db="nucleotide", term='trnL[Gene] AND "g-h"[Region] AND plants[Organism]') record = Entrez.read(handle) id_list = record["IdList"] fasta = Entrez.efetch(db="nucleotide", id=id_list, rettype="fasta") ``` **2. 构建本地数据库** 使用BLAST+工具创建可查询数据库: ```bash # 格式转换与去重 seqkit rmdup -s plant_trnL.fasta > dedup.fasta # 构建BLAST数据库 makeblastdb -in dedup.fasta -dbtype nucl -out plant_trnL_db -parse_seqids ``` 数据库需包含关键元数据:物种名、地理来源、样本ID(如:`>Oryza_sativa|Japan|NC_001320.1`) **3. 样本处理与测序** 从环境样本(粪便/土壤)提取DNA,使用通用引物扩增trnL(UAA)g-h片段: - **正向引物 g**: 5'-GGGCAATCCTGAGCCAA-3' - **反向引物 h**: 5'-CCATTGAGTCTCTGCACCTATC-3' PCR条件:94℃ 3min; 35×(94℃ 30s, 50℃ 45s, 72℃ 1min); 72℃ 10min。高通量测序采用Illumina MiSeq PE250。 **4. 序列预处理流程** ```bash # 质控 (FastQC + Trimmomatic) java -jar trimmomatic PE -phred33 raw_R1.fq raw_R2.fq clean_R1.fq unpaired_R1.fq clean_R2.fq unpaired_R2.fq SLIDINGWINDOW:4:20 MINLEN:100 # 合并双端序列 (FLASH) flash -M 300 -o output clean_R1.fq clean_R2.fq # 去噪 (USEARCH) usearch -fastx_uniques merged.fastq -fastaout uniques.fa -sizeout ``` **5. trnL基因片段比对** 使用BLASTn进行本地比对: ```bash blastn -query uniques.fa -db plant_trnL_db -out results.txt \ -outfmt "6 qseqid sseqid pident length evalue" \ -evalue 1e-10 -perc_identity 85 ``` 关键参数: - `-evalue 1e-10`:严格过滤假阳性 - `-perc_identity 85`:最低相似度阈值 - 比对结果解析公式: $$ \text{置信度} = \frac{\text{匹配长度}}{\text{参考序列长度}} \times \text{相似度百分比}$$ **6. 结果分析与验证** - 统计物种频率:`awk '{print $2}' results.txt | sort | uniq -c` - 使用MEGAX构建系统发育树验证疑难序列 - 阴性对照率需<0.1%,已知样本召回率>95% **注意事项** - 引物选择:优先使用Taberlet等人验证的通用引物 - 数据库更新:每季度整合新发表的trnL序列 - 误差控制:PCR重复≥3次,测序深度>10,000x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值