zoukankan      html  css  js  c++  java
  • poj1220(进制转换,短除法)

    题意:进制转换,把a进制转换为b进制。

    如果数据不大的话,那么这个题还是很简单的,但这个题就是数据范围太大,所以这里可以采用短除法来做。

    关于短除法,就是把每一位(这里指的每一位是指个位十位之类的)除以要转换的进制的余数在乘以当前进制的值加到下一位去,当前位的值就为商,然后这样一直进行到最后一位(也就是个位)个位在对所须转换的进制在取模,那么这个模就是转换后的结果。多次重复,直到最后一位为0,从后往前看就是答案。

    举个例子:50,要从十进制转换为二进制。

    十位是5,个位是0,那么首先5/2商为2,余1

    下一步就是1*10+0=10,然后个位就变成了10,然后10/2=5余0,0就是结果的个位,

    然后下一步就是对25进行操作

    2/2商1余0,那么十位就是1,个位就是0*10+5=5.

    5/2商2余1,那么结果的十位就是1。

    然后对12进行操作,十位是1,1/2商0余1,那么十位就为0了。

    个位就是1*10+2=12.12/2商6余0,结果的百位就是0.

    因为十位是0,所以只对个位进行操作了,6/2商3余0,千为就是0

    3/2商1余1,万位为1.

    1/2商0余1,十万位为1,所以50转换为二进制就是110010

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    const int maxn=1000;
    int t[maxn],ans[maxn];
    char c[maxn];
    
    int main(){
        //freopen("oooo.out","w",stdout);
        int a,b;
        int n;
        int k;
        scanf("%d",&n);
        while(n--){
            scanf("%d%d%s",&a,&b,c);
            int len=strlen(c);
            for (int i=0,j=len-1;i<len;i++,j--){
                if(c[j]<='Z'&&c[j]>='A'){
                    t[i]=c[j]-'A'+10;
                }
                else if(c[j]<='z'&&c[j]>='a'){
                    t[i]=c[j]-'a'+36;
                }
                else {
                    t[i]=c[j]-'0';
                }
            }
            for (k=0;len;){
                for (int i=len-1;i>0;i--){
                    t[i-1]+=t[i]%b*a;
                    t[i]=t[i]/b;
                }
                ans[++k]=t[0]%b;
                t[0]/=b;
                while(len>0&&!t[len-1]) len--;
            }
            printf("%d %s
    ",a,c);
            printf("%d ",b);
            for (int i=k;i>=1;i--){
                if(36<=ans[i]) printf("%c",ans[i]-36+'a');
                else if(ans[i]<36&&ans[i]>=10) printf("%c",ans[i]-10+'A');
                else printf("%d",ans[i]);
            }
            printf("
    
    ");
        }
    return 0;
    }
  • 相关阅读:
    【Android】 分享一个完整的项目,适合新手!
    Android笔记:Fragment与ViewPager组合时,如何在FragmentActicity获取Fragment对象
    android 获取日期
    Java: 分解List<HashMap<String, String>>
    android ExpandableListView实现不同的布局
    android: activity切换之效果
    android: activity之间切换的抽屉效果
    android 获取适配的bitmap等相关
    Eclipse改变外观,护眼模式
    安装 NoMachine(NX) client and server
  • 原文地址:https://www.cnblogs.com/lmjer/p/8972037.html
Copyright © 2011-2022 走看看