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:把所有的负数N转化为正数-N,可以直接用__int64解决!-------程序有错误的地方In Reply To:把所有的负数N转化为正数-N,可以直接用__int64解决! Posted by:nudt_zhangkai at 2007-02-06 00:33:38 > 如果N可以被表示,-N也一定可以被表示,此时只需要把n换成p,p换成n即可。 > #include "iostream.h" > int main() > { > int i,n,K; > int a[100]={0},b[100]={0}; > char ch; > cin>>n; > __int64 N,MAX; > while(n--) > { > cin>>K; > for(i=0;i<K;i++) > { > cin>>ch; > if(ch=='p') > a[i]=1; > else > a[i]=-1; > b[i]=0; > } > N=0;MAX=0; > cin>>ch; > if(ch=='-') > { > for(i=0;i<K;i++) > a[i]=-a[i]; > } > else > N+=(ch-'0'); > while((ch=cin.get())>='0'&&ch<='9') > N=N*10+(ch-'0'); > > for(i=0;i<K;i++) > { > MAX=(a[i]>0)?((MAX<<1)+1):(MAX<<1); > } > if(N>MAX) > { > cout<<"Impossible"<<endl; > continue; > } > > for(i=K-1;i>=0;i--) > { > if(N%2==1) > { > b[i]=1; > N=((N-a[i])>>1); > } > else > { > b[i]=0; > N=N>>1; > } > } > if(N==0) > { > for(i=0;i<K;i++) > cout<<b[i]; > cout<<endl; > } > else > { > cout<<"Impossible"<<endl; > > } > } > > return 1; > > } 这个程序当k=64时,输入任何数结果都是Impossible! 显然有问题! Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator