zoukankan      html  css  js  c++  java
  • 封杀病毒 NOJ

    封杀病毒

    时间限制(普通/Java) : 20000 MS/ 30000 MS          运行内存限制 : 65536 KByte
    总提交 : 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
    ",static_cast<ll>(pow(ld(2),ld(2*k-1))+pow(ld(2),ld(k-1))-res));
        }
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    三十岁了是否该改行——我完全晕倒了
    asp.net Context.Handler 页面间传值的几种方法
    信道与信道栈
    正则表达式之字符组
    移动Web界面样式CSS3
    Media Queries语法总结
    WCF全面解析(上下册)
    HTML5移动Web开发指南
    HTML5移动开发即学即用(双色)
    可靠会话最佳实践
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965482.html
Copyright © 2011-2022 走看看