| ||||||||||
| 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