1 条题解
-
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
信息
- ID
- 809
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者