zoukankan      html  css  js  c++  java
  • 【LOJ 10163】Amount of Degrees

    1057. Amount of Degrees

    Time limit: 1.0 second
    Memory limit: 64 MB
    Create a code to determine the amount of integers, lying in the set [X;Y] and being a sum of exactly K different integer degrees of B.
    Example. Let X=15, Y=20, K=2, B=2. By this example 3 numbers are the sum of exactly two integer degrees of number 2:
    17 = 24+20,
    18 = 24+21,
    20 = 24+22.

    Input

    The first line of input contains integers X and Y, separated with a space (1 ≤ X ≤ Y ≤ 231−1). The next two lines contain integers K and B (1 ≤ K ≤ 20; 2 ≤ B ≤ 10).

    Output

    Output should contain a single integer — the amount of integers, lying between X and Y, being a sum of exactly K different integer degrees of B.

    Sample

    inputoutput
    15 20
    2
    2
    
    3
    
    Problem Source: Rybinsk State Avia Academy

    题解:食用:https://loj.ac/problem/10163 效果更佳。copy不来数字和字母。

    数位DP,详细内容见jl课件。

    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<cmath>
    #include<cstring>
    #include<cstdlib>
    #include<cstdio>
    using namespace std;
    int x,y,k,b;
    int h[31],f[66][66];
    void Yao_Chen_Lai_le(){
        f[0][0]=1; f[0][1]=1;
        for(int i=1;i<=31;i++){
            f[i][0]=1;
            for(int j=1;j<=i+1;j++)
                f[i][j]=f[i-1][j-1]+f[i-1][j];
        }
    } 
    
    int Cookies(int x){
        int top=-1;
        while(x){
            int p=x%b;
            x/=b; h[++top]=p;
        }
        int biu=0,ans=0;
        for(int i=top;i>=0;i--){
            if(h[i]==1){
                biu++;
                if(biu>k+1) break;
                if(i>0) ans+=f[i-1][k-biu+1]; 
            } 
            else {
                if(h[i]>1){
                    ans+=f[i][k-biu];
                    return ans;
                }
            } 
        }
        if(biu==k) ++ans;
        return ans;
    }
    int main(){
        freopen("10163.in","r",stdin);
        freopen("10163.out","w",stdout);
        scanf("%d %d %d %d",&x,&y,&k,&b);
        Yao_Chen_Lai_le(); 
        printf("%d
    ",Cookies(y)-Cookies(x-1));
        return 0;
    }
  • 相关阅读:
    JS中const的使用
    JS的作用域,闭包的理解
    python中函数的默认参数是空数组
    asp.net 导出 Excel
    asp.net 导出 Excel 身份证格式显示格式问题
    HTML5
    JQuery中checkbox选择器
    JQuery中DOM操作(一)
    PL/SQL 创建用户及权限操作
    PL/SQL 表约束
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11245678.html
Copyright © 2011-2022 走看看