封杀病毒 NOJ
封杀病毒
时间限制(普通/Java) : 20000 MS/ 30000 MS 运行内存限制 : 65536 KByte
总提交 : 980 测试通过 : 144
总提交 : 980 测试通过 : 144
题目描述
最近H1N1病毒很猖狂。有小道消息说这种病毒来自实验室。
生物学家发现,H1N1型病毒的基因十分奇怪,科学家已经对它的基因图谱做了分析,发现可以用一种编号制度给它的碱基编号。
编号工作完成后,科学家又惊奇地发现一对神奇的碱基,它没有在基因中出现。找到这对碱基,将有可能是控制疾病的突破口。
已知碱基由1到2^k(2的k次方)编号的。科学家用一种长度为2^k的记忆条存储碱基信息:如果碱基i出现了,就在记忆条的坐标i处做个标记。
工作还是比较顺利的,但老眼昏花的科学家找那个丢失的碱基号码的时候,老是晕头转向,屡找屡败。
现在这项工作交给你,希望你能力挽狂澜。
输入
有多组测试数据。
每组测试数据第一行一个整数k表示碱基的数目为2^k(1<=k<=20)。
第二行到第2^k行每行一个整数表示找到的一碱基的编号(并不是按顺序给出的)。
输出
输出那对关键碱基的编号。
样例输入
2
4
1
3
样例输出
2
这题看起来没什么难度==就是输出1-2^k之前缺省的数,但是提交的时候CE了好几次==
把类型转换一下就OK了,下面贴上代码:
#include<cstdio> #include<cstdlib> #include<cmath> int k; typedef long double ld; typedef long long ll; ll temp,res=0; int main() { while(~scanf("%d",&k)) { res=0; for(ll i=2;i<=ll(pow(ld(2),ld(k)));i++) { scanf("%I64d",&temp); res+=temp; } printf("%I64d\n",static_cast<ll>(pow(ld(2),ld(2*k-1))+pow(ld(2),ld(k-1))-res)); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
posted on 2015-04-16 12:34 Tob__yuhong 阅读(164) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步