zoukankan      html  css  js  c++  java
  • SHUoj 字符串进制转换

                                           字符串进制转换

    发布时间: 2017年7月9日 18:17   最后更新: 2017年7月9日 21:17   时间限制: 1000ms   内存限制: 128M

    Claire Redfield在龙之谷游戏的一次任务中获得了一个上了锁的宝箱,上面刻了一串由小写字母构成的字符串A和一个数字

    经过Claire长时间研究,他发现密码是和 有关的。字符串A相当于一个26进制的数字, 相当于 相当于 ……. 相当于25  。然后要将这个26进制的数转化成 进制那就是这个宝箱的密码。

    Claire觉得这个太简单了所以要你帮她完成。

    多组输入,每组一行,输入一个字符串 和一个正整数
    字符串长度<=102<=m<=

    每组输出一行答案,如题意。


    b 2
    1

    思路:进制转换,不过要注意特判0时候的情况
    AC代码:
    #define _CRT_SECURE_NO_DEPRECATE
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<set>
    #include<vector>
    #include<cstring>
    #include<string>
    using namespace std;
    typedef long long ll;
    vector<int>vec;
    string s;
    int m;
    ll change(string s, int base) {
        ll num = 0;
        for (int i = 0; i < s.size(); i++) {
            num = num*base + s[i] - 'a';
        }
        return num;
    }
    
    void transalte(ll sum, int m) {
        while (sum) {
            vec.push_back(sum%m);
            sum /= m;
        }
    }
    
    int main() {
        while (cin >> s >> m) {
            vec.clear();
            ll sum = change(s, 26);
            if (!sum) { cout << "0" << endl; continue; }
            transalte(sum, m);
            reverse(vec.begin(), vec.end());
            for (vector<int>::iterator it = vec.begin(); it != vec.end(); it++) {
                if ((it + 1) != vec.end())cout << *it;
                else cout << *it << endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/ZefengYao/p/7193674.html
Copyright © 2011-2022 走看看