POJ 1850 Code
2016-04-23 11:39
447 查看
Code
Description
Transmitting and memorizing information is a task that requires different coding systems for the best use of the available space. A well known system is that one where a number is associated to a character sequence. It is considered
that the words are made only of small characters of the English alphabet a,b,c, ..., z (26 characters). From all these words we consider only those whose letters are in lexigraphical order (each character is smaller than the next character).
The coding system works like this:
• The words are arranged in the increasing order of their length.
• The words with the same length are arranged in lexicographical order (the order from the dictionary).
• We codify these words by their numbering, starting with a, as follows:
a - 1
b - 2
...
z - 26
ab - 27
...
az - 51
bc - 52
...
vwxyz - 83681
...
Specify for a given word if it can be codified according to this coding system. For the affirmative case specify its code.
Input
The only line contains a word. There are some constraints:
• The word is maximum 10 letters length
• The English alphabet has 26 characters.
Output
The output will contain the code of the given word, or 0 if the word can not be codified.
Sample Input
Sample Output
利用排列与组合公式,注意输入不合法时直接退出循环
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 9141 | Accepted: 4363 |
Transmitting and memorizing information is a task that requires different coding systems for the best use of the available space. A well known system is that one where a number is associated to a character sequence. It is considered
that the words are made only of small characters of the English alphabet a,b,c, ..., z (26 characters). From all these words we consider only those whose letters are in lexigraphical order (each character is smaller than the next character).
The coding system works like this:
• The words are arranged in the increasing order of their length.
• The words with the same length are arranged in lexicographical order (the order from the dictionary).
• We codify these words by their numbering, starting with a, as follows:
a - 1
b - 2
...
z - 26
ab - 27
...
az - 51
bc - 52
...
vwxyz - 83681
...
Specify for a given word if it can be codified according to this coding system. For the affirmative case specify its code.
Input
The only line contains a word. There are some constraints:
• The word is maximum 10 letters length
• The English alphabet has 26 characters.
Output
The output will contain the code of the given word, or 0 if the word can not be codified.
Sample Input
bf
Sample Output
55
利用排列与组合公式,注意输入不合法时直接退出循环
#include <stdio.h> #include <string.h> char s[15]; int len; int sum; int com(int n, int m) { if(n < m) return 0; if(m == 0 || m == n) return 1; return com(n-1, m-1) + com(n-1, m); } int main() { int i; char j; s[0] = 'a' - 1; while(scanf("%s", &s[1]) != EOF) { sum = 0; len = strlen(&s[1]); for(i = 1; i <= len-1; i++) { if(s[i+1] <= s[i]) { printf("0\n"); return 0; } } for(i = 1; i <= len-1; i++) sum += com(26, i); for(i = 1; i <= len; i++) { for(j = s[i-1] + 1; j < s[i]; j++) { sum += com(25 - (j - 'a'), len - i); } } printf("%d\n", ++sum); } return 0; }
相关文章推荐
- Mybatis最入门---动态查询(where,trim,set)
- Angular的简单入门:2个基本指令,MVC,模块化和SPA的概念
- hibernate---树状映射
- java之比较两个日期大小
- poj 1609 Tiling Up Blocks
- 算法学习笔记之五家共井问题
- Nginx配置文件nginx.conf详解(总结)
- Mysql学习小结
- JavaScript中的offsetParent属性
- OpenCV+ MFC 对图像的读取、显示、保存
- CMake 使用方法
- Android之SurfaceView与View
- unity 坐标系
- bzoj4262: Sum
- Recast & Detour & TerrainExport Study Feeling
- 更改虚拟机的配置
- 大数据量下高并发同步的讲解(不看,保证你后悔)
- 工厂模式--实例化
- Android SO逆向-多重继承
- linux c++ 多线程编程