UVA 11121 - Base -2 (十进制数转化为-2进制)

来源:互联网 发布:c语言入门书籍 知乎 编辑:程序博客网 时间:2024/06/07 00:34

算法:

int n,c = -1;a[0] = 0;while(n){    a[++c] = n%base; //base<0为负进制    n/=base;    if(a[c]<0)    {        a[c]+=base;        n++;    }}while(c>0)    printf("%d",a[c--]);printf("%d\n",a[0]);


大笑
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>using namespace std;int a[110];int main(){    int n,T,cas = 1;    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        int c = -1;        a[0] = 0;        while(n)        {            a[++c] = n%(-2);            n/=(-2);            if(a[c]<0)            {                a[c] += 2;                n++;            }        }        printf("Case #%d: ",cas++);        while(c>0)            printf("%d",a[c--]);        printf("%d\n",a[0]);    }    return 0;}



0 0
原创粉丝点击