• HDU 2451 Simple Addition Expression


    题目大意:有一个关于 简单加法表达式  的定义告诉你,就是  选一个数字i  如果 i+(i+1)+(i+2) 它的和,没有任何一位进位的话,那就是 一个i的简单加法表达式,求小于n的表达式数目。

    题解:排列组合分类讨论即可……

    #include <cstdio> 
    #include <cmath> 
    #include <cstring> 
    using namespace std;  
    char s[15];   
    int solve(int i,int p){  
        if(p==1)return s[i]>'2'?3:s[i]-'0'+1;  
        if(s[i]>'3'){return (int)pow(4.0,p-1)*3;}
        else{   
            int t1=(int)(pow(4.0,p-2)*3*(s[i]-'0'));  
            int t2=solve(i+1,p-1);
            return t1+t2;  
        }  
    }  
    int main(){  
        __int64 n;  
        while(scanf("%I64d",&n)!=EOF){  
            n--;  
            sprintf(s,"%I64d",n);  
            printf("%d
    ",solve(0,strlen(s)));  
        }  
        return 0;  
    }  
    
  • 相关阅读:
    天才绅士少女助手克里斯蒂娜「推柿子」
    sum「莫队」
    simple,跳楼机,[同余系最短路]
    ceoi「chase」
    jzoj5195 数的划分
    lcis
    rectangle
    w
    v·y「状压dp」
    分手是住院「期望dp」
  • 原文地址:https://www.cnblogs.com/forever97/p/3662245.html
Copyright © 2020-2023  润新知