1 solutions
-
0
C++ :
#include<iostream> #include<cstdlib> using namespace std; int n; void init(); void work(int); int main() { init(); work(-2); //cout<<-3/-2<<endl; return 0; } void init() { cin>>n; } void work(int k) { int a[1000]={0}; int i=1,m=n,r; if(m==0||m==1)//如果输入为0或者1直接输出 { a[i]=m; cout<<m<<endl; exit(0); } while(1) { r=m%k;//让为该数的余数,不过如果m为负,r可能为负 m=m/k; if(r<0)//如果r为负只需减一个k即可为正, { r=r-k; m=m+1; //多减一个k商就需加1 } a[i]=r; ++i; if(m==1)break;//这个条件只能在这里写,不能写在while的条件里,因为只有处理后m==1才能表明结束 //cout<<i<<' '; //如果不是-2进制,这个地方只要是m小于|k|即可 } a[i]=1; for(int j=i;j>0;--j)cout<<a[j]; cout<<endl; }
- 1
Information
- ID
- 20025
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By