主题:tju 1131 走丢的奶牛
btx
[专家分:0] 发布于 2005-06-30 20:04:00
http://acm.tongji.edu.cn/showproblem.php?problem_id=1131
怎么没有人会用c++做啊
那个牛人会做发代码上来
回复列表 (共6个回复)
沙发
davidw017 [专家分:4170] 发布于 2005-07-07 15:53:00
我跟你说一下思路吧,有 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 就是丢的奶牛
挺简单的程序,我相信你知道如何写了
板凳
killercat [专家分:1330] 发布于 2005-08-25 01:35:00
我的想法和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 楼
killercat [专家分:1330] 发布于 2005-08-25 12:48:00
double型有8位最大表示到:2^63-1 足够放下: 2^20 但是居然超时.好奇怪啊.
4 楼
snowwhite [专家分:1050] 发布于 2005-08-25 15:37:00
#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 楼
FancyMouse [专家分:13680] 发布于 2005-08-27 12:40:00
我用C++提交3000ms超时,用C提交500多ms,ac了
6 楼
killercat [专家分:1330] 发布于 2005-08-27 16:35:00
同济的系统...实在不怎么好用啊!!
我来回复