fork(7) download
  1. #include <stdio.h>
  2.  
  3. void denew(int B, int * N, int * K){
  4. int n,k,i,b;
  5. for( n=1; n<B; n++ ){
  6. b=i=n;
  7. for( k=2; 2*k<=n; k++ ) {
  8. b = b*(--i)/k;
  9. if( b==B ) {
  10. *N= n; *K= k; return; }
  11. if( b>B ) break;
  12. }
  13. }
  14. *N=B; *K=1;
  15. }
  16. #define MAX 20
  17.  
  18. int n,k,licznik=0,wsie=0;
  19. int p[MAX+2];
  20.  
  21. int min( int x, int y) { return x<y ? x : y;}
  22.  
  23. long long int silnia(int n){
  24. long long int s=1;
  25. while(n) s*=n--; return s;}
  26.  
  27. void PrintIt(int t, int z) {
  28. if( z>0 && t!=z) return;
  29. int i,pop; long long int perm;
  30. printf("%3d, %3d | ", ++licznik, t);
  31. p[t+1]=0; pop=1; perm=silnia(t);
  32. for(i=1; i<=t; i++){
  33. if(p[i]!=p[pop]){
  34. perm/=silnia(i-pop);
  35. pop=i;}
  36. printf("%2d ", p[i]);}
  37. perm/=silnia(i-pop);
  38. while(i++<23) printf(" "); printf(" %20llu\n", perm);
  39. wsie+=perm;}
  40.  
  41. void P (int n, int k, int t, int z) {
  42. int j;
  43. p[t] = k;
  44. if (n==k)
  45. PrintIt(t, z);
  46. for (j=min(k,n-k); j>=1; j--)
  47. P(n-k,j,t+1,z);}
  48.  
  49. int main() {
  50. int i, z ,d;
  51. scanf("%d %d",&i, &z);
  52. P(i*2, i, 0, z);
  53. for(i=1;i<23;i++) printf(" ");
  54. denew(wsie, &i, &z);
  55. printf("Wszystkich do kupy %14d=newton(%d,%d)\n", wsie, i, z);
  56. z=wsie & (-wsie);
  57. if( z== wsie){
  58. for(i=1;i<23;i++) printf(" ");
  59. i=1; z=2;
  60. while( z != wsie) {
  61. i++; z*=2; }
  62. printf(" = 2 ^ %d\n", i);
  63. }
  64. return 0;}
Time limit exceeded #stdin #stdout 5s 1680KB
stdin
5 5
stdout
Standard output is empty