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;
    }
  • 相关阅读:
    python+webdriver(二)
    python+webdriver(一)
    重逢
    在C,C++,java和python运行时解释器和编译器的区别
    hive调优
    github 操作指南
    jupyter 启动时的问题
    海量数据模型实施方法论
    python之Tkinker学习
    使用cmd命令行进行本地证书读取
  • 原文地址:https://www.cnblogs.com/wejex/p/3243169.html
Copyright © 2011-2022 走看看