Saturday, 29 July 2017

1189 - Sum of Factorials

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long unsigned
  4. #define N 66
  5. ll fac[N];
  6. void pre(){
  7.     fac[0] = 1;
  8.     for(int i = 1; i <N; i++) fac[i] = fac[i-1]*i;
  9. }
  10. int main(){
  11.     pre();
  12.     int ts;
  13.     scanf("%d"&ts);
  14.     for(int p = 1;p<= ts; p++){
  15.     ll ans;
  16.     scanf("%llu"&ans);
  17.     vector<int> a;
  18.     for(int i = N-1; i>= 0; i--) {
  19.         if(ans>= fac[i]){
  20.             ans = ans-fac[i];
  21.             a.push_back(i);
  22.         }
  23.     }
  24.     if(ans == 0){
  25.     printf("Case %d: ", p);
  26.     sort(a.begin(), a.end());
  27.     for(int i = 0; i <a.size()-1; i++) printf("%d!+", a[i]);
  28.     printf("%d!\n", a[a.size()-1]);
  29.     }
  30.     else printf("Case %d: impossible\n", p);
  31.     }
  32.     //for(int i = 0; i <N; i++) cout<<fac[i]<<" ";
  33.    
  34.     return 0;
  35. }

No comments:

Post a Comment

Most Featured Post

Lightoj 1159 - Batman

http://lightoj.com/volume_showproblem.php?problem=1159 problem analysis: First i thought of this as if s1, s2 and s3 are those three str...