Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:这题要用64位In Reply To:这题要用64位 Posted by:houxuanfelix at 2006-08-25 09:24:33 请教下64位怎么用啊?我对位数变化不是很熟哦。 就是定义_int64就可以了吗?附代码如下,我是用dp做的,后面一个仁兄也讲mark[i][j]=mark[i][j-1]+mark[i-1][j/2]的dp递推是对的。关键是mark[12][2005]我之前定义int测试些数据时都对了。提交它说wa。后来直接该为_int64,测试数据时我的电脑显示莫名奇妙的数。 #include<iostream> #include<math.h> using namespace std; void f(_int64 a[12][2005]) { int i,j; for(i=2;i<12;i++) for(j=pow(2.0,i-1)+1;j<2005;j++) a[i][j]=a[i][j-1]+a[i-1][j/2]; } int main() { _int64 mark[12][2005];//行为组数N,列为最大数M,N<=M int k,c,i,j,an[55],n[55],m[55]; for(j=1;j<2005;j++)mark[1][j]=j; for(i=2;i<12;i++) { for(j=0;j<pow(2.0,i-1);j++) mark[i][j]=0; mark[i][j]=1; } mark[2][2]=1; f(mark); cin>>c; for(k=0;k<c;k++) { cin>>i>>j; n[k]=i; m[k]=j; an[k]=mark[i][j]; } for(k=0;k<c;k++) { cout<<"Case "<<k+1<<": n="<<n[k]<<",m="<<m[k]<<",#lists="; printf("%I64d ",an[k]); cout<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator