int main(void) { int n, Sum; char AddChoice; printf("1+2+...+n=?請輸入n="); scanf("%d", &n); fflush(stdin); printf("請問要做奇數和(O),偶數和(E),還是整數和(I)?請選擇:"); scanf("%c", &AddChoice); switch (AddChoice) { case 'O': Sum = Odd(n); break; case 'E': Sum = Even(n); break; case 'I': Sum = TotalSum(n); break; default: printf("選擇錯誤\n"); return -1; } printf("總和為%d\n", Sum); /* system("pause"); */ }
void srowfftshifta(float* in,int rows,int columns,float* out){ switch(rows%2){ case 0 : Pair(in,rows,columns,out); break; case 1 : Odd(in,rows,columns,out); break; default : break; } }
/*************************************************************************** * L O G D O U B L E F A C T (Log of double factorial) * * * * Return log( n!! ) where the double factorial is defined by * * * * (2 n + 1)!! = 1 * 3 * 5 * ... * (2n + 1) (Odd integers) * * * * (2 n)!! = 2 * 4 * 6 * ... * 2n (Even integers) * * * * and is related to the single factorial via * * * * (2 n + 1)!! = (2 n + 1)! / ( 2^n n! ) (Odd integers) * * * * (2 n)!! = 2^n n! (Even integers) * * * ***************************************************************************/ double LogDoubleFact( int n ) // log( n!! ) { int k = n / 2; double f = LogFact( k ) + k * LogTwo; if( Odd(n) ) f = LogFact( n ) - f; return f; }
void partitionOdd(int value) { printf("partitionOdd %d\n",value); int * arr = malloc(value * sizeof(int)); int ind = 0; Odd(value,arr,ind); free(arr); }
int sos_smaller_dist_abcd (int i, int k, const Lia_ptr a, const Lia_ptr b, const Lia_ptr c) { int result, s; #ifdef __DEBUG__ if (sos_proto_flag) print ("sos_smaller_abcd (%d,%d,...)\n", i, k); #endif if (i < k) s = 0; else { /* swap i <--> k */ s = i; i = k; k = s; s = 1; } do { lia_push (a); lia_push (sos_lia (i, 1)); lia_push (sos_lia (k, 1)); lia_minus (); lia_times (); lia_push (b); lia_push (sos_lia (i, 2)); lia_push (sos_lia (k, 2)); lia_minus (); lia_times (); lia_push (c); lia_push (sos_lia (i, 2)); lia_push (sos_lia (k, 2)); lia_minus (); lia_times (); lia_plus (); lia_plus (); result = lia_sign (lia_popf ()); if (result) break; result = lia_sign (c); if (result) break; result = lia_sign (b); if (result) break; result = lia_sign (a); if (result) break; Assert_always (FALSE); } once; if (Odd (s)) result = -result; #ifdef __DEBUG__ if (sos_proto_flag) print ("sos_smaller_dist_abcd result: %d\n", result); #endif return (result); }
void Odd(int n,int * arr,int ind) { int val; if(n == 0) { partprint(arr,ind); return; } for(val=1;val<=n;val++) { arr[ind]=val; if(arr[ind]%2==1) { Odd(n-val,arr,ind+1); } } }
inline bool Even(const Type &a) { return !Odd(a); }
int TotalSum(int U) { return Odd(U) + Even(U); }