• CF -- Phone Number


    Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u

    []   [Go Back]   [Status]  

    Description

    Alas, finding one's true love is not easy. Masha has been unsuccessful in that yet. Her friend Dasha told Masha about a way to determine the phone number of one's Prince Charming through arithmancy.

    The phone number is divined like that. First one needs to write down one's own phone numbers. For example, let's suppose that Masha's phone number is12345. After that one should write her favorite digit from 0 to 9 under the first digit of her number. That will be the first digit of the needed number. For example, Masha's favorite digit is 9. The second digit is determined as a half sum of the second digit of Masha's number and the already written down first digit from her beloved one's number. In this case the arithmetic average equals to (2 + 9) / 2 = 5.5. Masha can round the number up or down, depending on her wishes. For example, she chooses the digit 5. Having written down the resulting digit under the second digit of her number, Masha moves to finding the third digit in the same way, i.e. finding the half sum the the third digit of her number and the second digit of the new number. The result is (5 + 3) / 2 = 4. In this case the answer is unique. Thus, every i-th digit is determined as an arithmetic average of the i-th digit of Masha's number and the i - 1-th digit of her true love's number. If needed, the digit can be rounded up or down. For example, Masha can get:

    12345
    95444
    Unfortunately, when Masha tried dialing the number, she got disappointed: as it turned out, the number was unavailable or outside the coverage area. But Masha won't give up. Perhaps, she rounded to a wrong digit or chose the first digit badly. That's why she keeps finding more and more new numbers and calling them. Count the number of numbers Masha calls. Masha calls all the possible numbers that can be found by the described means of arithmancy, except for, perhaps, her own one.

    Input

    The first line contains nonempty sequence consisting of digits from 0 to 9 — Masha's phone number. The sequence length does not exceed 50.

    Output

    Output the single number — the number of phone numbers Masha will dial.

    Sample Input

    Input
    12345
    Output
    48
    Input
    09
    Output
    15
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    using namespace std ;
    
    long long dp[52][10] ;
    int map[54];
    char s[52] ;
    
    int main()
    {
        int n , mun  , i , j;
        //freopen("in.txt","r",stdin) ;
        //freopen("oo.txt","w",stdout) ;
        while( scanf("%s",s) != EOF )
        {
            n = strlen(s) ;
            map[0] = s[0]-'0' ;
            for( i = 1 ; i < n ;i++ )
            {
                map[i] = s[i]-'0' ;
            }
            memset(dp,0,sizeof(dp)) ;
            for( i = 0 ; i <= 9 ;i++ ){
                dp[0][i] = 1 ;
            }
            for( j = 1 ; j < n ;j++ )
            {
                for( i = 0 ; i <= 9 ;i++ )
              {
                if(i*2-1-map[j]>=0 &&i*2-1-map[j] <= 9)dp[j][i] += dp[j-1][i*2-1-map[j]] ;
                if(i*2-map[j]>=0 &&i*2-map[j]<=9 )dp[j][i] += dp[j-1][i*2-map[j]] ;
                if(i*2+1-map[j]<=9 &&i*2+1-map[j] >=0 )dp[j][i] += dp[j-1][i*2+1-map[j]] ;
              }
            }
            long long  ans = 0 ;
            for( i = 0 ; i <= 9 ;i++ )
               ans += dp[n-1][i] ;
    
        int *a = map ;
        bool flag = 1 ;
        int pre = a[0] ;
        for(int i=1; i< n; i++){
            int t = pre + a[i] ;
            if(t % 2 == 1){
                if(t / 2 != a[i] && t / 2 + 1 != a[i])  flag = 0 ;
            }else{
                if(t / 2 != a[i])   flag = 0 ;
            }
            pre = a[i] ;
        }
        if(flag){ ans-- ; }
            cout << ans << endl ;
        }
        return 0 ;
    }
    View Code
  • 相关阅读:
    java中的IO整理
    指针 study~O(∩_∩)O~
    const形参与非const形参
    最大公约数递归求解
    值传递、地址传递、引用传递(参考网上各种资料总结哦~)
    windows8开发笔记(4)消息弹出动画
    Azure绑定域名以及利用FTP上传文件
    windows8安装第三方Modern UI(Metro)应用方法
    windows8开发笔记(2)通知
    windows8开发笔记(5)说说Json的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/20120125llcai/p/3292653.html
Copyright © 2020-2023  润新知