进制转换

    xiaoxiao2025-02-25  18

    题目描述 请你编一程序实现两种不同进制之间的数据转换。 输入 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。 输出 输出仅一行,包含一个正整数,表示转换之后的m进制数。 样例输入 16 FF 2 样例输出 11111111

    跟大哥要的代码:

    #include <iostream> #include <cstdio> using namespace std; typedef long long ll; int n,to; ll POW(int n,int sz){ ll ans = 1; for(int i =0;i<sz;i++){ ans*=n; } return ans; } ll change1(string s){ int len = s.length(); ll ans = 0;int l = 0; for(int i=len-1;i>=0;i--){ int tmp = 0; if(s[i] >='A'){ tmp = 10 + s[i] - 'A'; } else tmp = s[i] - '0'; ans += tmp * POW(n,l++); } return ans; } ll change2(ll dic){ char ans[100]; int l = 0; while(dic){ ans[l++] = dic%to; dic = dic/to; } for(int i=l-1;i>=0;i--){ if(ans[i] >=10){ printf("%c",ans[i] - 10 + 'A'); } else printf("%d",ans[i]); } puts(""); } int main(){ while(scanf("%d",&n)!=EOF){ string s; cin>>s; cin>>to; ll tmp =change1(s); //cout<<tmp<<endl; change2(tmp); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1296639.html
    最新回复(0)