QQ3. 编码
描述
假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,输入是任意一个编码,输出这个编码对应的Index.输入描述
输入一个待编码的字符串,字符串长度小于等于100.输出描述
输出这个编码的index示例1
输入:
baca
输出:
16331
C++ 解法, 执行用时: 1ms, 内存消耗: 220KB, 提交时间: 2017-07-30
#include <iostream> #include <string> #include <math.h> using namespace std; int main(){ string s; cin>>s; int len=s.length(); int index=0; for(int i=0;i<len;i++,index++){ int n=s[i]-'a'; for(int j=0;j<4-i;j++){ index+=n*pow(25,j); } } cout<<index-1<<endl; return 0; }
C++ 解法, 执行用时: 1ms, 内存消耗: 220KB, 提交时间: 2017-07-22
#include<iostream> #include<algorithm> #include<string> using namespace std; int main() { string s; while (cin >> s) { int cnt = 0, tmp1 = 0; for (int i = 0; i<4; i++) { if (i <= s.size() - 1) { tmp1 = tmp1 * 25 + (s[i] - 'a'); if (i == s.size() - 1) cnt = cnt + tmp1; else cnt = cnt + tmp1+1; } else { tmp1 = tmp1 * 25; cnt = cnt + tmp1; } } cout << cnt << endl; } }
C++ 解法, 执行用时: 1ms, 内存消耗: 220KB, 提交时间: 2017-07-19
#include <iostream> #include <string.h> #include <vector> using namespace std; char str[1010]; int base[4]; int main() { while(cin>>str) { int len = strlen(str); base[3] = 1; for(int i=2;i>=0;i--) { base[i] = base[i+1]*25+1; } int _index = 0; for(int j=0;j<len;j++) { _index += ((str[j]-'a')*base[j]+1); } cout<<_index-1<<endl; } return 0; }
C++ 解法, 执行用时: 1ms, 内存消耗: 220KB, 提交时间: 2017-07-17
#include <iostream> #include <string> using namespace std; int num(int n) { int ans = 0; int t = 1; for(int i = 0; i <= n; i++) { ans += t; t *= 25; } return ans; } int main() { string s; cin >> s; int ans = 0; for(int i = 0; i < s.size(); i++) { ans += (s[i] - 'a')*num(3 - i); if(i != s.size() - 1) ans++; } cout << ans; }
C++ 解法, 执行用时: 1ms, 内存消耗: 220KB, 提交时间: 2017-07-06
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { string a; cin >> a; int len = a.size(); int index = min(4,len); int cur = 0, sum = 0; for(int i = 0;i<index;i++) { cur += a[i]-'a'; sum += cur; if(i<index-1) sum++; cur *=25; } while(index<4) { sum+=cur; cur *=25; index++; } cout<<sum; return 0; }