• Ural 1057


    刘聪  集训队里面的一篇文章 (浅谈数位统计)如果大于1  后面的所有位都变成1  这是满足条件的能到达的最大值

    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    int X,Y,K,B,arr[33],F[33][33];
    int work( int num )
    {
           int i,j,t = num,k = 0;
           while( t )
           {
               arr[k++] = t%B;
               t /= B;
           }
           for( i = k-1; i >= 0 ; i-- )
           if( arr[i] > 1 )
           {
                 for( j = i; j >= 0; j-- )
                   arr[j] = 1;
                 break;
           }
             num = 0;
           for( i = k-1; i>= 0 ; i-- )
           if( arr[i] )
           num += (1<<i);
    
           int ans = 0,total = 0;
           for( i = 31; i; i-- )
           {
                if( num&(1<<i) )
                {
                    total++;
                    if( total > K )break;
                    num^=(1<<i);
                }
                if( (1<<(i-1)) <= num )
                ans += F[i-1][K-total];
            }
            if( num + total == K )ans++;
            return ans;
    }
    int main( )
    {
          F[0][0] = 1;
          for( int i = 1; i <=32; i++ )
          {
              F[i][0] = 1;
              for( int j = 1; j <= i; j++ )
              F[i][j] = F[i-1][j] + F[i-1][j-1];
          }
          while( scanf("%d%d%d%d",&X,&Y,&K,&B) != EOF )
          printf("%d\n",work( Y ) - work( X - 1 ) );
          return 0;
    }
    /*
    
    123  312312
    3 3
    0 321321
    3 4
    1232  32131321
    2 3
    
    
    901
    936
    247
    */
    

      

  • 相关阅读:
    P2788 数学1(math1)- 加减算式
    数据库第三章-学习笔记
    字典序
    P1739 表达式括号匹配
    P3742 umi的函数
    P1765 手机
    P2192 HXY玩卡片
    全排函数c++ next_permutation()
    11.css定义下拉菜单
    10.php引用(&)详解及注意事项
  • 原文地址:https://www.cnblogs.com/wulangzhou/p/3057357.html
Copyright © 2020-2023  润新知