Advertisement
BoxerTC

Untitled

Jun 26th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define sc( x ) scanf( "%d" , &x )
  5. #define REP( i , n ) for( int i = 0 ; i < n ; i++ )
  6. #define clr( t , val ) memset( t , val , sizeof(t) )
  7.  
  8. #define all(v)  v.begin() , v.end()
  9. #define pb push_back
  10. #define SZ( v ) ((int)(v).size())
  11.  
  12. #define mp make_pair
  13. #define fi first
  14. #define se second
  15.  
  16. #define test() cerr << "hola q hace" << endl;
  17. #define DEBUG( x ) cerr <<  #x << "=" << x << endl;
  18. #define DEBUG2( x , y ) cerr << #x << "=" << x << " " << #y << "=" << y << endl;
  19.  
  20. typedef long long ll;
  21. typedef vector< ll > vll;
  22. typedef pair< int , int > pii;
  23. typedef vector< pii > vpii;
  24. typedef vector< int > vi;
  25. typedef vector< vi > vvi;
  26.  
  27. int cnt;
  28. int n;
  29. int lvl;
  30. void dfs( int pos , int last , ll sum , ll prod ){
  31.     if( pos == lvl ){
  32.         if( sum == prod ) cnt++;
  33.         return;
  34.     }
  35.     for( int val = last ; val <= n ; ++val ){
  36.         if( pos < lvl - 1 ){
  37.             if( prod * val <= n ) dfs( pos + 1 , val , sum + val , prod * val );
  38.         }else{
  39.             dfs( pos + 1 , val , sum + val , prod * val );
  40.         }
  41.     }
  42. }
  43. int solve(){
  44.     int ans = 0;
  45.     for( int k = 1 ; k <= min( 10 , n ) ; ++k ){
  46.         int ones = n - k;
  47.         cnt = 0;
  48.         lvl = k;
  49.         dfs( 0 , 2 , ones , 1 );
  50.         ans += cnt;
  51.     }
  52.     return ans;
  53. }
  54. int main(){
  55.     freopen( "sump.in" , "r" , stdin );
  56.     freopen( "sump.out" , "w" , stdout );
  57.    
  58.     while( sc( n ) == 1 ){
  59.         printf( "%d\n" , solve() );
  60.     }  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement