<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: cpp code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 25 Jul 2008 02:55:05 GMT</pubDate>
    <description>DZone Snippets: cpp code</description>
    <item>
      <title>A solution for the "Carmichael Numbers" problem</title>
      <link>http://snippets.dzone.com/posts/show/5429</link>
      <description>A solution for the "Carmichael Numbers" problem.&lt;br /&gt;&lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10006.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10006.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://www.inf.ufrgs.br/~jmftrindade"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.04.24&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* &lt;br /&gt; * Solution for "Carmichael Numbers" problem.&lt;br /&gt; * UVa ID: 10006&lt;br /&gt; */&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;#define MAXPRIME 65001&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; * Modular exponentiation algorithm. Returns b^e mod m.&lt;br /&gt; */&lt;br /&gt;unsigned long long fast_mod_pow(unsigned long long b, unsigned long long e, unsigned long long m) {&lt;br /&gt;    unsigned long long r = 1;&lt;br /&gt;    while (e &gt; 0) {&lt;br /&gt;        if ((e &amp; 1) == 1) {&lt;br /&gt;	    r = (r * b) % m;&lt;br /&gt;        }&lt;br /&gt;        e &gt;&gt;= 1;&lt;br /&gt;        b = (b * b) % m;&lt;br /&gt;    }&lt;br /&gt;    return r;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* &lt;br /&gt; * Generates all prime numbers up to MAXPRIME. Based on&lt;br /&gt; * the Sieve of Eratosthenes.&lt;br /&gt; */&lt;br /&gt;void gen_primes(bool p[]) {&lt;br /&gt;    p[0] = p[1] = false;&lt;br /&gt;	&lt;br /&gt;    /* &lt;br /&gt;     * starting at number 2 and going to the upper limit, mark &lt;br /&gt;     * all numbers as potential primes &lt;br /&gt;     */  &lt;br /&gt;    for (int i=2; i&lt;MAXPRIME; i++) {&lt;br /&gt;        p[i] = true;&lt;br /&gt;    }&lt;br /&gt;	&lt;br /&gt;    int m = floor(sqrt(MAXPRIME));&lt;br /&gt;    int n;&lt;br /&gt;    /* &lt;br /&gt;     * mark all multiples of a prime as non-primes. this has to be done for primes &lt;br /&gt;     * only up to the square root, since every number in the array has at least &lt;br /&gt;     * one factor smaller than the square root of the limit. &lt;br /&gt;     */&lt;br /&gt;    for (int i=2; i&lt;m; i++) {&lt;br /&gt;        if (p[i]) {&lt;br /&gt;       	    n = MAXPRIME / i;&lt;br /&gt;	    for (int j=2; j&lt;=n; j++) {&lt;br /&gt;	        p[i * j] = false;&lt;br /&gt;	    }&lt;br /&gt;	}&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* generates all carmichael numbers up to the given limit by performing the fermat test */&lt;br /&gt;void gen_carmi(bool c[], bool p[]) {&lt;br /&gt;&lt;br /&gt;    /* initialize carmichael numbers array with false */&lt;br /&gt;    memset(c, 0, MAXPRIME * sizeof(bool));&lt;br /&gt;	&lt;br /&gt;    /* &lt;br /&gt;     * starting from the first non-prime, mark all &lt;br /&gt;     * odd numbers as potential carmichael numbers &lt;br /&gt;     */&lt;br /&gt;    for (int i=9; i&lt;MAXPRIME; i+=2) {&lt;br /&gt;	c[i] = true;&lt;br /&gt;    }&lt;br /&gt;	&lt;br /&gt;    /* &lt;br /&gt;     * again, for all odd numbers, we exclude the primes and perform&lt;br /&gt;     * the fermat test for 2 &lt;= a &lt;= n-1.&lt;br /&gt;     */&lt;br /&gt;    for (int n=9; n&lt;MAXPRIME; n+=2) {&lt;br /&gt;	/* VERY IMPORTANT! check first if this number is prime, otherwise we get TLE */&lt;br /&gt;	if (p[n]) {&lt;br /&gt;	    c[n] = false;&lt;br /&gt;	    continue;&lt;br /&gt;	}&lt;br /&gt;	for (int a=2; a&lt;=n-1; a++) {&lt;br /&gt;	    if (fast_mod_pow(a,n,n) != a) {&lt;br /&gt;	        c[n] = false;&lt;br /&gt;		break;&lt;br /&gt;	    } &lt;br /&gt;	}	&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* main */&lt;br /&gt;int main() {&lt;br /&gt;    unsigned long long n; /* number */&lt;br /&gt;    unsigned long long a; /* a of the fermat test */&lt;br /&gt;    bool prime[MAXPRIME]; /* prime numbers array */&lt;br /&gt;    bool carmi[MAXPRIME]; /* carmichael numbers array */&lt;br /&gt;	&lt;br /&gt;    gen_primes(prime);&lt;br /&gt;    gen_carmi(carmi, prime);&lt;br /&gt;	&lt;br /&gt;    while (cin &gt;&gt; n &amp;&amp; (n != 0)) {	&lt;br /&gt;        if (carmi[n]) {&lt;br /&gt;            cout &lt;&lt; "The number " &lt;&lt; n &lt;&lt; " is a Carmichael number." &lt;&lt; endl;&lt;br /&gt;        } else {&lt;br /&gt;            cout &lt;&lt; n &lt;&lt; " is normal." &lt;&lt; endl;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 24 Apr 2008 23:16:02 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5429</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "Binomial Showdown" problem</title>
      <link>http://snippets.dzone.com/posts/show/5360</link>
      <description>A solution for the "Binomial Showdown" problem.&lt;br /&gt;&lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://acm.uva.es/p/v5/530.html"&gt;http://acm.uva.es/p/v5/530.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://www.inf.ufrgs.br/~jmftrindade"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.04.11&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/*&lt;br /&gt; * Solution for the "Binomial Showdown" problem.&lt;br /&gt; * UVa ID: 530&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;/* main */&lt;br /&gt;int main() {&lt;br /&gt;    int n, k;&lt;br /&gt;    unsigned long long r; /* result */&lt;br /&gt;&lt;br /&gt;    while(cin &gt;&gt; n &gt;&gt; k &amp;&amp; ((n != 0) || (k != 0))) {&lt;br /&gt;        /* init result */&lt;br /&gt;        r = 1;&lt;br /&gt;&lt;br /&gt;        /* if k is more than half of n, then use the complement */&lt;br /&gt;        if(k &gt; (n / 2)) {&lt;br /&gt;            k = n - k;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /*         &lt;br /&gt;         * C(n,k) = n! / (k!(n-k)!) =&lt;br /&gt;         * (n)(n-1)(...)(n-k+1) / 2*3*4*(...)*k&lt;br /&gt;         */ &lt;br /&gt;        for (int i=0; i&lt;k; i++) {&lt;br /&gt;            r = r * (n - i);   /* (n)(n-1)(...)(n-k+1) */&lt;br /&gt;            r = r / (1 + i);   /* 2*3*4*(...)*k */&lt;br /&gt;        }&lt;br /&gt;        cout &lt;&lt; r &lt;&lt; endl;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 14 Apr 2008 01:43:03 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5360</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "Reverse and Add" problem</title>
      <link>http://snippets.dzone.com/posts/show/5359</link>
      <description>A solution for the "Reverse and Add" problem.&lt;br /&gt;&lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10018.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10018.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://www.inf.ufrgs.br/~jmftrindade"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.04.14&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/*&lt;br /&gt; * Solution for the "Reverse and Add" problem.&lt;br /&gt; * UVa ID: 10018&lt;br /&gt; */&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;&lt;br /&gt;#define NDIGITS 100&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;/* returns the reversed number */&lt;br /&gt;unsigned long long reverse(unsigned long long number) {&lt;br /&gt;	unsigned long long m = 0; /* reversed number */&lt;br /&gt;	int digits[NDIGITS]; /* digits array */&lt;br /&gt;	int pos = 0, power = 1;&lt;br /&gt;	&lt;br /&gt;	/* init */&lt;br /&gt;	for (int i=0; i&lt;NDIGITS; i++) {&lt;br /&gt;		digits[i] = 0;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	/* retrieve all digits */&lt;br /&gt;	while (number &gt; 0) {&lt;br /&gt;		digits[pos++] = number % 10;&lt;br /&gt;		number = number / 10;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/* multiply the reversed digits by the powers of ten */&lt;br /&gt;	for (int i=pos-1; i&gt;=0; i--) {&lt;br /&gt;		m += power * digits[i];&lt;br /&gt;		power *= 10;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	return m;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* main */&lt;br /&gt;int main() {&lt;br /&gt;	int nc; /* number of cases */&lt;br /&gt;	int m; /* minimum number of iterations */&lt;br /&gt;	unsigned long long n; /* number */&lt;br /&gt;	&lt;br /&gt;	cin &gt;&gt; nc;&lt;br /&gt;	&lt;br /&gt;	/* reverse and add.. */&lt;br /&gt;	for (int i=0; i&lt;nc; i++) {&lt;br /&gt;		cin &gt;&gt; n;&lt;br /&gt;		m = 0;&lt;br /&gt;		while (true) {&lt;br /&gt;			if (reverse(n) == n) {&lt;br /&gt;				break;&lt;br /&gt;			} else {&lt;br /&gt;				n += reverse(n);&lt;br /&gt;				m++;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		cout &lt;&lt; m &lt;&lt; " " &lt;&lt; n &lt;&lt; endl;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	return 0;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 14 Apr 2008 01:38:45 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5359</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "Primary Arithmetic" problem</title>
      <link>http://snippets.dzone.com/posts/show/5358</link>
      <description>A solution for the "Primary Arithmetic" problem.&lt;br /&gt;&lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10035.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10035.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://www.inf.ufrgs.br/~jmftrindade"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.04.04&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/**&lt;br /&gt; * Solution for the "Primary Arithmetic" problem.&lt;br /&gt; * UVa ID: 10035&lt;br /&gt; */ &lt;br /&gt;#include &lt;iostream.h&gt; &lt;br /&gt;#include &lt;stdlib.h&gt; &lt;br /&gt;&lt;br /&gt;using namespace std; &lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;    unsigned long long n1; /* 1st number */ &lt;br /&gt;    unsigned long long n2; /* 2nd number */ &lt;br /&gt;    int carry = 0; /* carry */ &lt;br /&gt;    int sum = 0; /* temporary sum */ &lt;br /&gt;    int count = 0; /* carry counter */ &lt;br /&gt;&lt;br /&gt;    while(cin &gt;&gt; n1 &gt;&gt; n2 &amp;&amp; ((n1 &gt; 0) || (n2 &gt; 0))) { &lt;br /&gt;        carry = 0; &lt;br /&gt;	count = 0; &lt;br /&gt;	sum = 0; &lt;br /&gt;&lt;br /&gt;	/* while there's still something.. */ &lt;br /&gt;	while ((n1 &gt; 0) || (n2 &gt; 0)) { &lt;br /&gt;	    /* sum the two right-most digits */ &lt;br /&gt;	    sum = carry + (n1 % 10) + (n2 % 10); &lt;br /&gt;&lt;br /&gt;	    if (sum &gt;= 10) { &lt;br /&gt;		count++; &lt;br /&gt;	    } &lt;br /&gt;			&lt;br /&gt;	    /* get the carry by dividing the sum of the two digits */ &lt;br /&gt;	    carry = sum / 10; &lt;br /&gt;&lt;br /&gt;	    /* 'reduce' the numbers by ten, to update the right-most digits */ &lt;br /&gt;	    n1 /= 10; &lt;br /&gt;            n2 /= 10; &lt;br /&gt;	} &lt;br /&gt;		&lt;br /&gt;	if (count == 0) { &lt;br /&gt;            cout &lt;&lt; "No carry operation." &lt;&lt; endl; &lt;br /&gt;	} else if (count == 1) { &lt;br /&gt;	    cout &lt;&lt; "1 carry operation." &lt;&lt; endl; &lt;br /&gt;	} else { &lt;br /&gt;            cout &lt;&lt; count &lt;&lt; " carry operations." &lt;&lt; endl; &lt;br /&gt;        } &lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;} &lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 14 Apr 2008 01:21:01 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5358</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "Shoemaker" problem</title>
      <link>http://snippets.dzone.com/posts/show/5357</link>
      <description>A solution for the "Shoemaker" problem.&lt;br /&gt;&lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10026.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10026.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://www.inf.ufrgs.br/~jmftrindade"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.04.06&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* &lt;br /&gt; * Solution for "Shoemaker" problem.&lt;br /&gt; * UVa ID: 10026&lt;br /&gt; */&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;&lt;br /&gt;#define NJOBS 1000&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int jobs[NJOBS]; /* jobs */&lt;br /&gt;double p[NJOBS]; /* priority */&lt;br /&gt;&lt;br /&gt;/* main */&lt;br /&gt;int main() {&lt;br /&gt;    int nc;	/* number of cases */&lt;br /&gt;	int nj; /* number of jobs */&lt;br /&gt;	int ct;	/* completion time */&lt;br /&gt;	int dp; /* daily penalty */&lt;br /&gt;	&lt;br /&gt;    cin &gt;&gt; nc;&lt;br /&gt;	&lt;br /&gt;	/* for each test case.. */&lt;br /&gt;    for (int i=0; i&lt;nc; i++) {&lt;br /&gt;		cin &gt;&gt; nj;&lt;br /&gt;		&lt;br /&gt;		/* init input */&lt;br /&gt;		for (int i=0; i&lt;nj; i++) {&lt;br /&gt;			cin &gt;&gt; ct &gt;&gt; dp;&lt;br /&gt;			jobs[i] = i;&lt;br /&gt;			/* priority is daily penalty divided by completion time (minimal fine) */&lt;br /&gt;			p[i] = double(dp) / ct;&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		int j, k, tmp;&lt;br /&gt;		&lt;br /&gt;		/* sort jobs by priority */&lt;br /&gt;		for (int i=0; i&lt;nj-1; i++) {&lt;br /&gt;			for (j=i+1, k=i; j&lt;nj; j++) {&lt;br /&gt;				if( (p[jobs[j]] &gt; p[jobs[k]]) || ((p[jobs[j]] == p[jobs[k]]) &amp;&amp; (jobs[j] &lt; jobs[k])) ) {&lt;br /&gt;					k=j;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;			tmp = jobs[i]; &lt;br /&gt;			jobs[i] = jobs[k]; &lt;br /&gt;			jobs[k] = tmp;&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		/* output */&lt;br /&gt;		for (int i=0; i&lt;nj; i++) {&lt;br /&gt;			if(i &gt; 0) { &lt;br /&gt;				cout &lt;&lt; " ";&lt;br /&gt;			}&lt;br /&gt;			cout &lt;&lt; jobs[i] + 1;&lt;br /&gt;		}&lt;br /&gt;		cout &lt;&lt; endl;&lt;br /&gt;		if (i &lt; nc-1) {&lt;br /&gt;			cout &lt;&lt; endl;&lt;br /&gt;		}&lt;br /&gt;    }&lt;br /&gt;	&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 14 Apr 2008 01:02:22 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5357</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "Stack 'em Up" problem</title>
      <link>http://snippets.dzone.com/posts/show/5356</link>
      <description>A solution for the "Stack 'em Up" problem.&lt;br /&gt;&lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/102/10205.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/102/10205.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://www.inf.ufrgs.br/~jmftrindade"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.04.05&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* &lt;br /&gt; * Solution for "Stack 'em Up" problem.&lt;br /&gt; * UVa ID: 10205&lt;br /&gt; */&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;&lt;br /&gt;#define NVALUES 13&lt;br /&gt;#define NSUITS 4&lt;br /&gt;#define NCARDS 52&lt;br /&gt;#define NSHUFFLES 100&lt;br /&gt;#define WSIZE 9&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;char values[NVALUES][WSIZE] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"};&lt;br /&gt;char suits[NSUITS][WSIZE] = {"Clubs", "Diamonds", "Hearts", "Spades"};&lt;br /&gt;int shuffles[NSHUFFLES][NCARDS];&lt;br /&gt;int deck[NCARDS];&lt;br /&gt;&lt;br /&gt;/* read all dealer shuffles */&lt;br /&gt;void read_shuffles(int n_shuff) {&lt;br /&gt;	for(int i=0; i&lt;n_shuff; i++) {&lt;br /&gt;		for (int j=0; j&lt;NCARDS; j++) {&lt;br /&gt;			cin &gt;&gt; shuffles[i][j];&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* shuffle the deck with one of the known shuffles */&lt;br /&gt;void shuffle_deck(int s_id) {&lt;br /&gt;	int tmpdeck[NCARDS];&lt;br /&gt;	for (int i=0; i&lt;NCARDS; i++) {&lt;br /&gt;		tmpdeck[i] = deck[shuffles[s_id][i] - 1];&lt;br /&gt;	}&lt;br /&gt;	for (int i=0; i&lt;NCARDS;i++) {&lt;br /&gt;		deck[i] = tmpdeck[i];&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* main */&lt;br /&gt;int main (int argc, const char *argv[]) {&lt;br /&gt;	int nc; /* number of cases */&lt;br /&gt;	int ns;	/* number of shuffles */&lt;br /&gt;	int s; /* current shuffle */&lt;br /&gt;		&lt;br /&gt;	cin &gt;&gt; nc;&lt;br /&gt;		&lt;br /&gt;	for (int i=0; i&lt;nc; i++) {	&lt;br /&gt;		cin &gt;&gt; ns;&lt;br /&gt;			&lt;br /&gt;		/* initialize deck */&lt;br /&gt;		for (int p=0; p&lt;NCARDS; p++) {&lt;br /&gt;			deck[p] = p;&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		/* read list of known shuffles */&lt;br /&gt;		read_shuffles(ns);&lt;br /&gt;		&lt;br /&gt;		/* shuffle deck */&lt;br /&gt;		for (int j=0; j&lt;ns; j++) {&lt;br /&gt;			cin &gt;&gt; s;&lt;br /&gt;			shuffle_deck(s - 1);&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		/* print deck */&lt;br /&gt;		for (int k=0; k&lt;NCARDS; k++) {&lt;br /&gt;			cout &lt;&lt; values[deck[k] % NVALUES] &lt;&lt; " of " &lt;&lt; suits[deck[k] / NVALUES] &lt;&lt; endl;&lt;br /&gt;		}&lt;br /&gt;		if (i &lt; (nc - 1)) {&lt;br /&gt;			cout &lt;&lt; endl;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 14 Apr 2008 00:29:21 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5356</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "Hartals" problem</title>
      <link>http://snippets.dzone.com/posts/show/5355</link>
      <description>A solution for the "Hartals" problem.&lt;br /&gt;&lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10050.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10050.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://www.inf.ufrgs.br/~jmftrindade"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.04.06&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* &lt;br /&gt; * Solution for the "Hartals" problem.&lt;br /&gt; * UVa ID: 10050&lt;br /&gt; */&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt; &lt;br /&gt;#define NDAYS 3651&lt;br /&gt; &lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;/* simulation time (in days) */&lt;br /&gt;int st[NDAYS]; &lt;br /&gt; &lt;br /&gt;/* main */&lt;br /&gt;int main (int argc, const char *argv[]) {&lt;br /&gt;	int nc; /* number of cases */&lt;br /&gt;	int nd; /* number of days */&lt;br /&gt;	int np; /* number of political parties */&lt;br /&gt;	int h; /* current hartal number */&lt;br /&gt;	int dl;	/* days lost */&lt;br /&gt;	&lt;br /&gt;	cin &gt;&gt; nc;&lt;br /&gt;	&lt;br /&gt;	/* for each case.. */&lt;br /&gt;	for (int i=0; i&lt;nc; i++) {&lt;br /&gt;		cin &gt;&gt; nd;&lt;br /&gt;		cin &gt;&gt; np;		&lt;br /&gt;		&lt;br /&gt;		/* initialize simulation table */&lt;br /&gt;		for (int j=0; j&lt;=nd; j++) {&lt;br /&gt;			st[j] = 0;&lt;br /&gt;		}&lt;br /&gt;		dl = 0; /* init days lost counter */&lt;br /&gt;		&lt;br /&gt;		/* update with hartal for each party */&lt;br /&gt;		for (int j=0; j&lt;np; j++) {&lt;br /&gt;			cin &gt;&gt; h;&lt;br /&gt;			for (int k=1; k*h-1&lt;=nd; k++) {&lt;br /&gt;				st[k*h-1] = 1; /* set lost day flag */&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		/* calculate number of days lost */&lt;br /&gt;		for (int j=0; j&lt;nd; j++) {&lt;br /&gt;			/* if it's not a friday or a saturday */&lt;br /&gt;			if ((j%7 != 5) &amp;&amp; (j%7 != 6) &amp;&amp; (st[j] == 1)) {&lt;br /&gt;				dl++;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		cout &lt;&lt; dl &lt;&lt; endl;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 14 Apr 2008 00:21:58 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5355</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>Automated GNU Makefile</title>
      <link>http://snippets.dzone.com/posts/show/3948</link>
      <description>A simple automated GNU Makefile to build and link c/c++/asm projects. All the variables that need to be tweaked are located at the begining:&lt;br /&gt;    PROGNAME: the name of the executable to be built&lt;br /&gt;    CC: the C compiler&lt;br /&gt;    CPP: the C++ compiler&lt;br /&gt;    ASM: the assambler&lt;br /&gt;    LD: the linker&lt;br /&gt;&lt;br /&gt;This searches for all *.c, *.cpp and *.s files and compiles them into objects. It then links all the files into a single executable.&lt;br /&gt;&lt;br /&gt;The strip rule is used to strip all unwanted symbols from the resulting executable. This usually results in a significant (think 40%) size optimisation.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$(VERBOSE).SILENT:&lt;br /&gt;&lt;br /&gt;PROGNAME = prog&lt;br /&gt;&lt;br /&gt;CC = gcc&lt;br /&gt;CC += -c&lt;br /&gt;CPP = g++&lt;br /&gt;CPP += -c&lt;br /&gt;ASM = nasm&lt;br /&gt;ASM += -f elf -d ELF_TYPE&lt;br /&gt;LD = g++&lt;br /&gt;&lt;br /&gt;OBJFILES = $(patsubst %.c,%.o,$(wildcard *.c))&lt;br /&gt;OBJFILES += $(patsubst %.s,%.o,$(wildcard *.s))&lt;br /&gt;OBJFILES += $(patsubst %.cpp,%.o,$(wildcard *.cpp))&lt;br /&gt;&lt;br /&gt;all: $(PROGNAME)&lt;br /&gt;&lt;br /&gt;clean:&lt;br /&gt;	@echo "Cleaning object files"&lt;br /&gt;	@echo "    rm -f     *.o"&lt;br /&gt;	rm -f *.o&lt;br /&gt;	@echo "Cleaning backups"&lt;br /&gt;	@echo "    rm -f     *~"&lt;br /&gt;	rm -f *~&lt;br /&gt;	@echo "Removing programme"&lt;br /&gt;	@echo "    rm -f     "$(PROGNAME)&lt;br /&gt;	rm -f $(PROGNAME)&lt;br /&gt;&lt;br /&gt;%.o: %.s&lt;br /&gt;	@echo "Assambling "$@&lt;br /&gt;	@echo "    ASM       "$&lt;&lt;br /&gt;	$(ASM) $&lt;&lt;br /&gt;&lt;br /&gt;%.o: %.c&lt;br /&gt;	@echo "Compiling "$@&lt;br /&gt;	@echo "    CC        "$&lt;&lt;br /&gt;	$(CC) $&lt;&lt;br /&gt;&lt;br /&gt;%.o: %.cpp&lt;br /&gt;	@echo "Compiling "$@&lt;br /&gt;	@echo "    CPP       "$&lt;&lt;br /&gt;	$(CPP) $&lt;&lt;br /&gt;&lt;br /&gt;$(PROGNAME): $(OBJFILES)&lt;br /&gt;	@echo "Linking "$@&lt;br /&gt;	@echo "    LD        -o "$(PROGNAME)"        "$(OBJFILES)&lt;br /&gt;	$(LD) -o $(PROGNAME) $(OBJFILES)&lt;br /&gt;&lt;br /&gt;strip: $(PROGNAME)&lt;br /&gt;	@echo "Stripping "$(PROGNAME)&lt;br /&gt;	echo -n "Size of "$(PROGNAME)" before strip is "&lt;br /&gt;	ls -sh $(PROGNAME) | cut -d' ' -f1&lt;br /&gt;	@echo "    strip     "$(PROGNAME)&lt;br /&gt;	strip $(PROGNAME)&lt;br /&gt;	echo -n "Size of "$(PROGNAME)" after strip is "&lt;br /&gt;	ls -sh $(PROGNAME) | cut -d' ' -f1&lt;br /&gt;&lt;br /&gt;nothing:&lt;br /&gt;	@echo "Nothing to do; quitting  :("&lt;br /&gt;	@echo "HINT: Try make all"&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Wed, 02 May 2007 17:43:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3948</guid>
      <author>scvalex (Alexandru Scvortov)</author>
    </item>
    <item>
      <title>Calling a S60 Python function from Symbian C++</title>
      <link>http://snippets.dzone.com/posts/show/3801</link>
      <description>Calls the Python function 'foo' in the module 'Bar'. &lt;br /&gt;A string value is passed to the Python function, and a string value is returned&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    TInt retVal(KErrNone);&lt;br /&gt;&lt;br /&gt;    // Create a Python interpreter&lt;br /&gt;    CSPyInterpreter* it = CSPyInterpreter::NewInterpreterL();&lt;br /&gt;    CleanupStack::PushL(it);&lt;br /&gt;&lt;br /&gt;    // Save state of any current Python interpreter, and acquire the&lt;br /&gt;    // interpreter lock&lt;br /&gt;    PyEval_RestoreThread(PYTHON_TLS-&gt;thread_state);&lt;br /&gt;&lt;br /&gt;    char *module_name = "Bar" ;&lt;br /&gt;    char *foo = "foo" ;&lt;br /&gt;    char *response = NULL ;&lt;br /&gt;&lt;br /&gt;    TInt32 r_len = 0 ;&lt;br /&gt;&lt;br /&gt;    PyObject *pModule = PyImport_ImportModule(module_name) ;&lt;br /&gt;&lt;br /&gt;    if ( pModule != NULL )&lt;br /&gt;    {&lt;br /&gt;    LOG_WRITE_L("CSenPythonSession::loaded ServiceConnection");&lt;br /&gt;&lt;br /&gt;    PyObject *module_dict = PyModule_GetDict(pModule);&lt;br /&gt;    PyObject *expression = PyDict_GetItemString(module_dict, pre_handler);&lt;br /&gt;    PyObject *arglist = Py_BuildValue("(s#)", aString.Ptr(),aString.Length()) ;&lt;br /&gt;&lt;br /&gt;    PyObject *result = PyEval_CallObject(expression, arglist);&lt;br /&gt;&lt;br /&gt;    response = PyString_AsString( result ) ;&lt;br /&gt;&lt;br /&gt;    r_len = strlen( response ) ;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // Make a Symbian descriptor pointer to the char * response&lt;br /&gt;    TPtrC8 symResponse((TUint8*)response, r_len ) ;&lt;br /&gt;&lt;br /&gt;    // Clean-up, and restore thread state&lt;br /&gt;&lt;br /&gt;    PyEval_SaveThread();&lt;br /&gt;    CleanupStack::PopAndDestroy(it); &lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 12 Apr 2007 00:38:10 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3801</guid>
      <author>frumioj (John Kemp)</author>
    </item>
    <item>
      <title>Most elementary Win-API "Hello, 'ere I am' code</title>
      <link>http://snippets.dzone.com/posts/show/3786</link>
      <description>This does nothing but opening a window for 5 seconds. No MFC, no C#, no resources, no whatsoever...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include&lt;windows.h&gt; &lt;br /&gt;#include&lt;tchar.h&gt;&lt;br /&gt;&lt;br /&gt;HWND NewWindow(&lt;br /&gt;			   LPCTSTR str_Title,&lt;br /&gt;			   int int_XPos, &lt;br /&gt;			   int int_YPos, &lt;br /&gt;			   int int_Width, &lt;br /&gt;			   int int_Height);&lt;br /&gt;&lt;br /&gt;LRESULT CALLBACK OurWindowProcedure(&lt;br /&gt;									HWND han_Wind,&lt;br /&gt;									UINT uint_Message,&lt;br /&gt;									WPARAM parameter1,&lt;br /&gt;									LPARAM parameter2);&lt;br /&gt;&lt;br /&gt;int WINAPI WinMain(&lt;br /&gt;				   HINSTANCE hInstance,&lt;br /&gt;				   HINSTANCE hPreviousInstance,&lt;br /&gt;				   LPSTR lpcmdline,&lt;br /&gt;				   int nCmdShow&lt;br /&gt;				   )&lt;br /&gt;	{&lt;br /&gt;	HWND han_Window = NewWindow(_T("DirectX C++ Tutorial"),100,100,500,500);&lt;br /&gt;	Sleep(5000);&lt;br /&gt;	DestroyWindow(han_Window);&lt;br /&gt;	return 0;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HWND NewWindow(&lt;br /&gt;			   LPCTSTR str_Title,&lt;br /&gt;			   int int_XPos, &lt;br /&gt;			   int int_YPos, &lt;br /&gt;			   int int_Width, &lt;br /&gt;			   int int_Height)&lt;br /&gt;	{&lt;br /&gt;&lt;br /&gt;	WNDCLASSEX wnd_Structure;&lt;br /&gt;&lt;br /&gt;	wnd_Structure.cbSize = sizeof(WNDCLASSEX);&lt;br /&gt;	wnd_Structure.style = CS_HREDRAW | CS_VREDRAW;&lt;br /&gt;	wnd_Structure.lpfnWndProc = OurWindowProcedure;&lt;br /&gt;	wnd_Structure.cbClsExtra = 0;&lt;br /&gt;	wnd_Structure.cbWndExtra = 0;&lt;br /&gt;	wnd_Structure.hInstance = GetModuleHandle(NULL);&lt;br /&gt;	wnd_Structure.hIcon = NULL;&lt;br /&gt;	wnd_Structure.hCursor = NULL;&lt;br /&gt;	wnd_Structure.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);&lt;br /&gt;	wnd_Structure.lpszMenuName = NULL;&lt;br /&gt;	wnd_Structure.lpszClassName = _T("WindowClassName");&lt;br /&gt;	wnd_Structure.hIconSm = LoadIcon(NULL,IDI_APPLICATION);&lt;br /&gt;&lt;br /&gt;	RegisterClassEx(&amp;wnd_Structure);&lt;br /&gt;&lt;br /&gt;	return CreateWindowEx(&lt;br /&gt;		WS_EX_CONTROLPARENT, &lt;br /&gt;		_T("WindowClassName"), &lt;br /&gt;		str_Title, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE,&lt;br /&gt;		int_XPos, &lt;br /&gt;		int_YPos, &lt;br /&gt;		int_Width, &lt;br /&gt;		int_Height, &lt;br /&gt;		NULL, &lt;br /&gt;		NULL, &lt;br /&gt;		GetModuleHandle(NULL),&lt;br /&gt;		NULL);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;LRESULT CALLBACK OurWindowProcedure(HWND han_Wind,UINT uint_Message,WPARAM parameter1,LPARAM parameter2)&lt;br /&gt;	{&lt;br /&gt;	return DefWindowProc(han_Wind,uint_Message,parameter1,parameter2);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 07 Apr 2007 18:11:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3786</guid>
      <author>stayefeh (Sascha Tayefeh)</author>
    </item>
  </channel>
</rss>
