回 帖 发 新 帖 刷新版面

主题:tju 1131  走丢的奶牛

http://acm.tongji.edu.cn/showproblem.php?problem_id=1131
    怎么没有人会用c++做啊
    那个牛人会做发代码上来

回复列表 (共6个回复)

沙发

我跟你说一下思路吧,有 2^k 个奶牛,k 最大 20,那么 2^k 最大 104XXXX 左右,数组肯定不行,那么这样

1) 给出 k, 计算出 2^k
2) 计算出 N=1+2+3+4+....+2^k
3) 然后读入没有丢的奶牛标号 M, N=N-M
4) 最后的 N 就是丢的奶牛

挺简单的程序,我相信你知道如何写了

板凳

我的想法和1楼一样
我写了下面的程序,就是因为没有用数组,可是不对.
#include <math.h>  
#include <iostream.h>  

int main()
{
    double sum=0,op;
    int k;
    while(cin>>k){
        sum=0;
        if(k==-1) break;
        double allsum=(pow(2,k)+1)*pow(2,k-1);
        int i=(int)pow(2,k);
        while(i-1)
        {
            cin>>op;
            sum=sum+op;
            i--;
        }
        cout<<allsum-sum<<endl;
    }
    return 0;
}


结果Time limit Exceeded!

3 楼

double型有8位最大表示到:2^63-1 足够放下: 2^20 但是居然超时.好奇怪啊.

4 楼

#include <stdio.h>
int main()
{
    int k;
    long i,n,t,s;
    while( scanf("%d",&k) != EOF )
    {   n = 1;
        n <<= k;
        s = 0;
        for( i = 0; i <= n; ++i )
            s += i;

        while( n-- > 1 )
        {
            scanf("%ld",&t);
            s -= t;
        }
        printf("%ld\n",s);
    }
    return 0;
}


5 楼

我用C++提交3000ms超时,用C提交500多ms,ac了

6 楼

同济的系统...实在不怎么好用啊!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册