• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-08-29)  算法/数据结构 |   抢沙发  54 
    文章评分 0 次,平均分 0.0

    文件按a~z,aa~az,ba~bz...za...zz...aaa...aaz,aba~abz...这样的方法进行编号。给定任意一个编号,输出文件是第几个文件。
    把这些字符串当做26进制数即可:
    a-->1
    z-->26;
    aa-->27
    需要做的工作即是进行26进制到10进制的转换。

    #include <iostream>
    #include <math.h>
    using namespace std;
    
    int charToNum(char ch)
    {
    	return ch - 96;
    }
    int anyBinaryToDecimal(string num,int binary)
    {
    	int len = num.size();
    	int decimal_num = 0;
    	for(int i = 0;i < len; i++)
    	{
    		decimal_num+=static_cast<int>(charToNum(num[i]) * pow(static_cast<float>(binary),(int)(len - i - 1)));
    	}
    	return decimal_num;
    }
    
    int main()
    {
    	cout<<anyBinaryToDecimal("aa",26)<<endl;
    	system("pause");
    }
     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/1933.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享