zoukankan      html  css  js  c++  java
  • NOIP2000TG T1 进制转换

    题目链接

    题意:

    求$n$的$r$进制表示法$(r<0)$。

    程序1(60pt):

    若$r>0$,每次用$r$除$n$,记录余数,用商替换$n$,最后倒序输出余数。

    然而这里$r<0$,直接整除可能会出现负的余数,然而没有负的数码,所以我们有

    $n=lfloorfrac{n}{d} floor*d+r=(lfloorfrac{n}{d} floor+1)*d+(r-d)$

    于是出现负余数时候,除数$++$,余数减除数就可以了。

    然而$r<-10$时,十个基础数码不够用了,于是$60pt$。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    const int N=16;
    
        int n,r,s[N+3];
    
    int main(){
        scanf("%d%d",&n,&r);
        int nn=n;
    
        int p=0,a,b;
        while(n!=0){
            p++;
            
            a=n/r;    b=n%r;
            if(b<0){
                a++;
                b=n-a*r;
                
            }
            
            n=a;
            s[p]=b;
            
        }
        
        printf("%d=",nn);
        for(int i=p;i>=1;i--)
            printf("%d",s[i]);
        printf("(base%d)",r);
        
        return 0;
        
    }

     程序2(100pt):

    修改一下输出部分。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    const int N=16;
    
        int n,r,s[N+3];
    
    int main(){
        scanf("%d%d",&n,&r);
        int nn=n;
    
        int p=0,a,b;
        while(n!=0){
            p++;
            
            a=n/r;    b=n%r;
            if(b<0){
                a++;
                b=n-a*r;
                
            }
            
            n=a;
            s[p]=b;
            
        }
        
        printf("%d=",nn);
        for(int i=p;i>=1;i--)
        if(s[i]<10)
            printf("%d",s[i]);
        else 
            putchar(s[i]-10+'A');
        printf("(base%d)",r);
        
        return 0;
        
    }

    小结:

    三思而后交代码。勿得意忘形。

  • 相关阅读:
    MyEclipse错误积累--持续更新
    Git错误积累-持续更新
    MySQL错误积累-持续更新
    评价一个人,就是要看他把时间都花在哪了
    收集的yum命令博文
    Github 常用命令
    python库收藏
    [转载]Scikit Learn: 在python中机器学习
    Windows下python安装Matplotlib、Numpy和Scipy模块
    [LeetCode] #45 Jump Game II
  • 原文地址:https://www.cnblogs.com/Hansue/p/10952164.html
Copyright © 2011-2022 走看看