fork(5) download
  1. #include <vector>
  2. #include <list>
  3. #include <map>
  4. #include <set>
  5. #include <deque>
  6. #include <stack>
  7. #include <bitset>
  8. #include <algorithm>
  9. #include <functional>
  10. #include <numeric>
  11. #include <utility>
  12. #include <sstream>
  13. #include <iostream>
  14. #include <iomanip>
  15. #include <cstdio>
  16. #include <cmath>
  17. #include <cstdlib>
  18. #include <ctime>
  19. #include<string.h>
  20. #define tr(c,it) for(typeof(c.begin()) it=c.begin();it!=c.end();++it)
  21. #define all(c) c.begin(),c.end()
  22. #define mod 1000000007
  23. #define itor(c) typeof(c.begin())
  24. #define ll long long
  25. #define vi vector<int>
  26. #define vs vector<string>
  27. #define si set<int>
  28. #define msi multiset<int>
  29. #define ii pair<int,int>
  30. #define sii set<ii>
  31. #define vii vector<ii>
  32. #define vvi vector<vi>
  33. #define pb push_back
  34. #define mp make_pair
  35.  
  36. using namespace std;
  37.  
  38. int main() {
  39. long long i,j,k,n,sum,arr[100];
  40. arr[0]=1;
  41. arr[1]=3;
  42. for(i=2;;++i)
  43. {
  44. arr[i]=arr[i-1]*2+arr[i-2];
  45. if(arr[i]>1000000000000000LL)
  46. break;
  47. }
  48. cin>>n;
  49. vector<long long> left,right;
  50. while(n!=0)
  51. {
  52. for(i=0;;++i)
  53. {
  54. sum=0;
  55. for(j=i;j>=0;j-=2)
  56. sum+=arr[j];
  57. if(sum>=abs(n))
  58. break;
  59. }
  60. if(n>0)
  61. {
  62. left.pb(arr[i]);
  63. n-=arr[i];
  64. }
  65. else if(n<0)
  66. {
  67. right.pb(arr[i]);
  68. n+=arr[i];
  69. }
  70. }
  71. for(i=0;i<left.size();++i)
  72. cout<<left[i]<<endl;
  73. cout<<endl;
  74. for(i=0;i<right.size();++i)
  75. cout<<right[i]<<endl;
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0s 3480KB
stdin
11
stdout
17
1

7