zoukankan      html  css  js  c++  java
  • ACM POJ

    Time Limit: 1000MS   Memory Limit: 30000KB   64bit IO Format: %I64d & %I64u

    []   [Go Back]   [Status]  

    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

    bf

    Sample Output

    55

    Source

     
    #include <iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int c[27][27];
    void table()
    {
        int i,j;
        for(i=0; i<=26; i++)
        {
            for(j=0; j<=i; j++)
            {
                if(!j||i==j)
                    c[i][j]=1;
                else
                    c[i][j]=c[i-1][j-1]+c[i-1][j];
            }
        }
        return;
    }
    int main()
    {
        table();
    
        char s[17];
    
        int i,j;
    
        scanf("%s",s);
    
        int len=strlen(s);
    
        for(i=1; i<len; i++)
        {
            if(s[i-1]>=s[i])
            {
                printf("0
    ");
                return 0;
            }
        }
    
        int sum=0;
    
        for(i=1; i<len; i++)
        {
            sum+=c[26][i];
        }
    
        for(i=0; i<len; i++)
        {
            char ch=(i==0?'a':s[i-1]+1);
            while(ch<=s[i]-1)
            {
                sum+=c['z'-ch][len-1-i];
                ch++;
            }
        }
    
        printf("%d
    ",sum+1);
    
        return 0;
    }
  • 相关阅读:
    自定义控件省市区:仿苹果级联菜单
    【数据存储】SQLite数据库存储(10) 操作通讯记录的ContentProvider
    js跨域的理解与实现
    HTML5学习笔记
    [置顶] 高效前端优化工具Fiddler入门教程
    iis7.0 cpu 限制
    centos下安装apache + subversion(转)
    PHP页面控制访问
    [置顶] 高性能建站之前端优化篇
    [置顶] 构架高性能WEB网站的几点知识
  • 原文地址:https://www.cnblogs.com/wejex/p/3243169.html
Copyright © 2011-2022 走看看