2016年 秋招 hua为 上机题目:CD key 生成

来源:互联网 发布:锦户亮与新垣结衣 知乎 编辑:程序博客网 时间:2024/05/09 17:20

题目很简单,把题目读懂最重要,笔者随手写点。。

原题:


#include <iostream>#include<vector> using namespace std; class cd_key{ private:     string mystring="23456789ABCDEFGHJKLMNPQRSTUVWXYZ";     char mychar='-'; public:     string cd_key_generate(int a,int b,int c) {         //先取低16 串起来         string s=low_n(a)+low_n(b)+low_n(c);//一共48         s+=s;         //先输出前14个         vector<char>v;         for(int i=1;i<15;++i){             string s2=s.substr(96-5*i,5);             v.push_back(string_char(s2));         }         //求 ascii 码的和         int sum=0;         for(char j:v)             sum+=j;         //取低十位         string s3=low_n(sum,10);         for(int i=0;i<2;++i){             string s4=s3.substr(5*i,5);             v.push_back(string_char(s4));         }         for(int k=0;k<3;++k)            v.insert(4+5*k+v.begin(),mychar);         string s5="";         for(char j:v)             s5+=j;         return s5;     }     //取低n位     string low_n(int &a,int n=16){         //默认取低16位         int temp=a;         string s="";         while(0 != temp)         {             s=char(48+temp % 2)+s;             temp = temp >> 1;         }         int m=s.size();         //变成了m位了         if(m>=n)return s.substr(0,n);             //否则还差 n-m位         else return string(n-m,'0')+s;     }     //把5位string 转为 字符串     char string_char(string &s){         int n=0;         for(char i:s)             n=2*n+i-48;         return mystring[n];     } };int main() {    cd_key A;    string ss=A.cd_key_generate(1,2,1);    cout<<ss<<endl;    return 0;}


0 0
原创粉丝点击