POJ-3191(负进制那点事儿)

来源:互联网 发布:安卓摄像机软件 编辑:程序博客网 时间:2024/05/21 06:16
负数进制和正数进制类似。对于负数进制,每次取的余数保证在0~-m-1之间。(例如m=-16,则余数应该在0~15)就可以直接输出。  所以用系统的“mod”运算符的时候必须注意检查是不是在该范围(可能在m+1~0),否则就调整。调整的方法是:
if 余数<0 then
begin
余数=余数-m;
商=商+1;
end;
#include "iostream"#include "cstring"#include "cstdlib"#include "cstdio"#define N 100000using namespace std;int n;int sk[N],tp;int main(){    scanf("%d",&n);    while(n){        int k=n%-2;        int t=n/-2;        if (k<0){            k+=2;            t++;        }        n=t;        sk[++tp]=k;    }    for (int i=tp;i>=1;i--)        printf("%d",sk[i]);    if (tp==0) printf("0");    puts("");    return 0;}  

0 0
原创粉丝点击