<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: uva code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 06:15:22 GMT</pubDate>
    <description>DZone Snippets: uva 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://joanatrindade.wikidot.com"&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://joanatrindade.wikidot.com"&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://joanatrindade.wikidot.com"&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://joanatrindade.wikidot.com"&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://joanatrindade.wikidot.com"&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://joanatrindade.wikidot.com"&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://joanatrindade.wikidot.com"&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>A solution for the "Interpreter" problem</title>
      <link>http://snippets.dzone.com/posts/show/5246</link>
      <description>A solution for the "Interpreter" problem.&lt;br /&gt; &lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10033.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/100/10033.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://joanatrindade.wikidot.com"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.03.16&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* &lt;br /&gt; * Solution for the "Interpreter" problem.&lt;br /&gt; * UVa ID: 10033&lt;br /&gt; */&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;#define MAX_REG 10&lt;br /&gt;#define MAX_RAM 1000&lt;br /&gt;&lt;br /&gt;int pointer;&lt;br /&gt;int regArray[MAX_REG];&lt;br /&gt;int ram[MAX_RAM];&lt;br /&gt;&lt;br /&gt;/* initialize registers and ram */&lt;br /&gt;int init() {&lt;br /&gt;	int i;&lt;br /&gt;	for (i = 0; i &lt; MAX_REG; i++) {&lt;br /&gt;		regArray[i] = 0;&lt;br /&gt;	}&lt;br /&gt;	for (i = 0; i &lt; MAX_RAM; i++) {&lt;br /&gt;		ram[i] = 0;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* decode instruction */&lt;br /&gt;int decode() {&lt;br /&gt;	int command, a1, a2;&lt;br /&gt;	command = ram[pointer] / 100;&lt;br /&gt;	a1 = (ram[pointer] % 100) / 10;&lt;br /&gt;	a2 = ram[pointer] % 10;&lt;br /&gt;	&lt;br /&gt;	switch (command) {&lt;br /&gt;		/* halt */&lt;br /&gt;		case 1 :		&lt;br /&gt;			return 0;&lt;br /&gt;			break;&lt;br /&gt;			&lt;br /&gt;		/* set register a1 to a2 */&lt;br /&gt;		case 2 :&lt;br /&gt;			regArray[a1] = a2;&lt;br /&gt;			pointer++;&lt;br /&gt;			break;&lt;br /&gt;			&lt;br /&gt;		/* add a2 to register a1 */&lt;br /&gt;		case 3 :&lt;br /&gt;			regArray[a1] = (regArray[a1] + a2) % 1000;&lt;br /&gt;			pointer++;&lt;br /&gt;			break;&lt;br /&gt;			&lt;br /&gt;		/* multiply register a1 by a2 */&lt;br /&gt;		case 4 :&lt;br /&gt;			regArray[a1] = (regArray[a1] * a2) % 1000;&lt;br /&gt;			pointer++;&lt;br /&gt;			break;&lt;br /&gt;			&lt;br /&gt;		/* set register a1 to the value of register a2 */&lt;br /&gt;		case 5 : &lt;br /&gt;			regArray[a1] = regArray[a2];&lt;br /&gt;			pointer++;&lt;br /&gt;			break;&lt;br /&gt;			&lt;br /&gt;		/* add the value of register a2 to register a1 */&lt;br /&gt;		case 6 : &lt;br /&gt;			regArray[a1] = (regArray[a1] + regArray[a2]) % 1000;&lt;br /&gt;			pointer++;&lt;br /&gt;			break;&lt;br /&gt;			&lt;br /&gt;		/* multiply register a1 by the value of register a2 */&lt;br /&gt;		case 7 :&lt;br /&gt;			regArray[a1] = (regArray[a1] * regArray[a2]) % 1000;&lt;br /&gt;			pointer++;&lt;br /&gt;			break;&lt;br /&gt;			&lt;br /&gt;		/* set register a1 to the value in RAM whose address is in register a2 */&lt;br /&gt;		case 8 :&lt;br /&gt;			regArray[a1] = ram[regArray[a2]];&lt;br /&gt;			pointer++;&lt;br /&gt;			break;			&lt;br /&gt;			&lt;br /&gt;		/* set the value in RAM whose address in in register a2 to that of register a1 */&lt;br /&gt;		case 9 :&lt;br /&gt;			ram[regArray[a2]] = regArray[a1];&lt;br /&gt;			pointer++;&lt;br /&gt;			break;			&lt;br /&gt;			&lt;br /&gt;		/* goto */		&lt;br /&gt;		case 0 :&lt;br /&gt;			if (regArray[a2] != 0) {&lt;br /&gt;				pointer = regArray[a1];&lt;br /&gt;			} else {&lt;br /&gt;				pointer++;&lt;br /&gt;			}&lt;br /&gt;			break;			&lt;br /&gt;			&lt;br /&gt;		default: &lt;br /&gt;			break;&lt;br /&gt;	}&lt;br /&gt;	return 1;	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* main */&lt;br /&gt;int main (int argc, const char * argv[]) {&lt;br /&gt;	int i, j, cases, num_instr;&lt;br /&gt;	char instr[5];&lt;br /&gt;&lt;br /&gt;	scanf("%d", &amp;cases);&lt;br /&gt;	fgets(instr, sizeof(instr), stdin);&lt;br /&gt;	fgets(instr, sizeof(instr), stdin);&lt;br /&gt;	num_instr = 0;&lt;br /&gt;	&lt;br /&gt;	/* for the number of test cases specified */&lt;br /&gt;	for (i = 0; i &lt; cases; i++) {&lt;br /&gt;		init();&lt;br /&gt;		&lt;br /&gt;		pointer = 0;&lt;br /&gt;		&lt;br /&gt;		if (i != 0) {&lt;br /&gt;			printf("\n");&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		/* read input ram */&lt;br /&gt;		while(fgets(instr, sizeof(instr), stdin) != NULL) {&lt;br /&gt;			if (instr[0] == '\n') {&lt;br /&gt;				break;&lt;br /&gt;			}&lt;br /&gt;			ram[pointer] = (instr[0] - '0') * 100 + (instr[1] - '0') * 10 + (instr[2] - '0');&lt;br /&gt;			pointer++;&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		/* decode and interpret instructions until halt */&lt;br /&gt;		num_instr = 1;&lt;br /&gt;		pointer = 0;&lt;br /&gt;		while (decode()) {&lt;br /&gt;			num_instr++;&lt;br /&gt;		}	&lt;br /&gt;		&lt;br /&gt;		printf("%d\n",num_instr);	&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 18 Mar 2008 09:26:35 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5246</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "Graphical Editor" problem</title>
      <link>http://snippets.dzone.com/posts/show/5245</link>
      <description>A solution for the "Graphical Editor" problem.&lt;br /&gt; &lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/external/102/10267.html"&gt;http://icpcres.ecs.baylor.edu/onlinejudge/external/102/10267.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://joanatrindade.wikidot.com"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.03.12&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* &lt;br /&gt; * Solution for the "Graphical Editor" problem.&lt;br /&gt; * UVa ID: 10267&lt;br /&gt; */&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;#define MAX 250&lt;br /&gt;#define OFFSET 1&lt;br /&gt;#define DOS_NAME 12&lt;br /&gt;&lt;br /&gt;/* global image bounds */&lt;br /&gt;int n, m;&lt;br /&gt;&lt;br /&gt;/* fills a rectangle with the specified color */&lt;br /&gt;int fillRectangle(int m_ini, int n_ini, int m_end, int n_end, char color, char pTable[][MAX+OFFSET]) {&lt;br /&gt;	int i, j;&lt;br /&gt;	for (i = n_ini; i &lt;= n_end; i++) {&lt;br /&gt;		for (j = m_ini; j &lt;= m_end; j++) {&lt;br /&gt;			pTable[i][j] = color;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* fills a region R with the specified color */&lt;br /&gt;int fillRegion(int x, int y, char oldColor, char newColor, char pTable[][MAX+OFFSET]) {	&lt;br /&gt;	/* (x,y) is in region R */&lt;br /&gt;	pTable[y][x] = newColor;&lt;br /&gt;	&lt;br /&gt;	/* recursively check all 4 directions for neighbours of (x,y) with same color */&lt;br /&gt;	if ((pTable[y][x-1] == oldColor) &amp;&amp; (x &gt; OFFSET)) {         &lt;br /&gt;		fillRegion(x-1, y, oldColor, newColor, pTable);&lt;br /&gt;	}&lt;br /&gt;	if ((pTable[y][x+1] == oldColor) &amp;&amp; (x &lt; m)) {       &lt;br /&gt;		fillRegion(x+1, y, oldColor, newColor, pTable);&lt;br /&gt;	}&lt;br /&gt;	if ((pTable[y-1][x] == oldColor) &amp;&amp; (y &gt; OFFSET)) {        &lt;br /&gt;		fillRegion(x, y-1, oldColor, newColor, pTable);&lt;br /&gt;	}&lt;br /&gt;	if ((pTable[y+1][x] == oldColor) &amp;&amp; (y &lt; n)) {        &lt;br /&gt;		fillRegion(x, y+1, oldColor, newColor, pTable);&lt;br /&gt;	}&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* outputs the image */&lt;br /&gt;int printImage(int m, int n, char pTable[][MAX+OFFSET]) {&lt;br /&gt;	int i, j;	&lt;br /&gt;	for (i = OFFSET; i &lt; n+OFFSET; i++) {&lt;br /&gt;		for (j = OFFSET; j &lt; m+OFFSET; j++ ) {&lt;br /&gt;			printf("%c", pTable[i][j]);&lt;br /&gt;		}&lt;br /&gt;		printf("\n");&lt;br /&gt;	}&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* main */&lt;br /&gt;int main (int argc, const char * argv[]) {&lt;br /&gt;	/* the image */&lt;br /&gt;	char image[MAX+OFFSET][MAX+OFFSET];&lt;br /&gt;&lt;br /&gt;	/* editor command */&lt;br /&gt;	char command;&lt;br /&gt;	&lt;br /&gt;	/* coords */&lt;br /&gt;	int x1, x2, y1, y2, tmp;&lt;br /&gt;	&lt;br /&gt;	/* colors */&lt;br /&gt;	char color, oldColor;&lt;br /&gt;	&lt;br /&gt;	/* filename */&lt;br /&gt;	char filename[DOS_NAME+1];&lt;br /&gt;			&lt;br /&gt;	while(scanf("%c", &amp;command) != EOF) {		&lt;br /&gt;		/* X, terminates the session */&lt;br /&gt;		if (command == 'X') {&lt;br /&gt;			return 0;&lt;br /&gt;		}		&lt;br /&gt;		switch (command) {&lt;br /&gt;			/* create image */&lt;br /&gt;			case 'I' :&lt;br /&gt;				scanf("%d %d", &amp;m, &amp;n);&lt;br /&gt;				fillRectangle(1, 1, m, n, 'O', image);&lt;br /&gt;				break;&lt;br /&gt;			&lt;br /&gt;			/* clear image */&lt;br /&gt;			case 'C' :&lt;br /&gt;				fillRectangle(1, 1, m, n, 'O', image);&lt;br /&gt;				break;&lt;br /&gt;			&lt;br /&gt;			/* colors a pixel */&lt;br /&gt;			case 'L' :&lt;br /&gt;				scanf("%d %d %c", &amp;x1, &amp;y1, &amp;color);&lt;br /&gt;				image[y1][x1] = color;&lt;br /&gt;				break;&lt;br /&gt;			&lt;br /&gt;			/* draw vertical segment */&lt;br /&gt;			case 'V' :&lt;br /&gt;				scanf("%d %d %d %c", &amp;x1, &amp;y1, &amp;y2, &amp;color);&lt;br /&gt;				if (y2 &gt;= y1)&lt;br /&gt;					fillRectangle(x1, y1, x1, y2, color, image);&lt;br /&gt;				else&lt;br /&gt;					fillRectangle(x1, y2, x1, y1, color, image);&lt;br /&gt;				break;&lt;br /&gt;			&lt;br /&gt;			/* draw horizontal segment */&lt;br /&gt;			case 'H' : &lt;br /&gt;				scanf("%d %d %d %c", &amp;x1, &amp;x2, &amp;y1, &amp;color);&lt;br /&gt;				if (x2 &gt;= x1)&lt;br /&gt;					fillRectangle(x1, y1, x2, y1, color, image);&lt;br /&gt;				else&lt;br /&gt;					fillRectangle(x2, y1, x1, y1, color, image);&lt;br /&gt;				break;&lt;br /&gt;			&lt;br /&gt;			/* draw rectangle */&lt;br /&gt;			case 'K' : &lt;br /&gt;				scanf("%d %d %d %d %c", &amp;x1, &amp;y1, &amp;x2, &amp;y2, &amp;color);&lt;br /&gt;				if (x1 &gt;= x2) {&lt;br /&gt;					tmp = x1;&lt;br /&gt;					x1 = x2;&lt;br /&gt;					x2 = tmp;&lt;br /&gt;				}&lt;br /&gt;				if (y1 &gt;= y2) {&lt;br /&gt;					tmp = y1;&lt;br /&gt;					y1 = y2;&lt;br /&gt;					y2 = tmp;&lt;br /&gt;				}&lt;br /&gt;				fillRectangle(x1, y1, x2, y2, color, image);&lt;br /&gt;				break;&lt;br /&gt;			&lt;br /&gt;			/* fill */&lt;br /&gt;			case 'F' :&lt;br /&gt;				scanf("%d %d %c", &amp;x1, &amp;y1, &amp;color);&lt;br /&gt;				oldColor = image[y1][x1];&lt;br /&gt;				if (oldColor != color) {&lt;br /&gt;					fillRegion(x1, y1, oldColor, color, image);&lt;br /&gt;				}&lt;br /&gt;				break;&lt;br /&gt;&lt;br /&gt;			/* fill */&lt;br /&gt;			case 'S' :&lt;br /&gt;				scanf("%s", &amp;filename);&lt;br /&gt;				printf("%s\n", filename);&lt;br /&gt;				printImage(m, n, image);&lt;br /&gt;				break;			&lt;br /&gt;		&lt;br /&gt;			default: &lt;br /&gt;				break;&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>Tue, 18 Mar 2008 09:23:41 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5245</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
    <item>
      <title>A solution for the "LCD Display" problem</title>
      <link>http://snippets.dzone.com/posts/show/5244</link>
      <description>A solution for the "LCD Display" problem.&lt;br /&gt; &lt;br /&gt;Problem description:&lt;br /&gt;&lt;a href="http://acm.uva.es/p/v7/706.html"&gt;http://acm.uva.es/p/v7/706.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: &lt;a href="http://joanatrindade.wikidot.com"&gt;Joana Matos Fonseca da Trindade&lt;/a&gt;&lt;br /&gt;Date: 2008.03.09&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* &lt;br /&gt; * Solution for the "LCD Display" problem.&lt;br /&gt; * UVa ID: 706&lt;br /&gt; */&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;#define MAX_SIZE 9&lt;br /&gt;&lt;br /&gt;int main (int argc, const char * argv[]) {&lt;br /&gt;	/* number of vertical or horizontal segments in each digit */&lt;br /&gt;	int s;&lt;br /&gt;	&lt;br /&gt;	/* the number to print */&lt;br /&gt;	char digitString[MAX_SIZE];&lt;br /&gt;	&lt;br /&gt;	/* &lt;br /&gt;	 * LED representation for each number, according to &lt;br /&gt;	 * the following convention:&lt;br /&gt;	 *&lt;br /&gt;	 *  -0-&lt;br /&gt;	 * |   |&lt;br /&gt;	 * 2   1&lt;br /&gt;	 * |   |&lt;br /&gt;	 *  -3-&lt;br /&gt;	 * |   |&lt;br /&gt;	 * 5   4&lt;br /&gt;	 * |   |&lt;br /&gt;	 *  -6-&lt;br /&gt;	 *&lt;br /&gt;	 */&lt;br /&gt;	&lt;br /&gt;	const char conversionTable[10][7] = {&lt;br /&gt;		      /* 0   1   2   3   4   5   6 */&lt;br /&gt;		/* 0 */ '-','|','|',' ','|','|','-',	  &lt;br /&gt;		/* 1 */ ' ','|',' ',' ','|',' ',' ',&lt;br /&gt;		/* 2 */ '-','|',' ','-',' ','|','-',&lt;br /&gt;		/* 3 */ '-','|',' ','-','|',' ','-',&lt;br /&gt;		/* 4 */ ' ','|','|','-','|',' ',' ',&lt;br /&gt;		/* 5 */ '-',' ','|','-','|',' ','-',&lt;br /&gt;		/* 6 */ '-',' ','|','-','|','|','-',&lt;br /&gt;		/* 7 */ '-','|',' ',' ','|',' ',' ',&lt;br /&gt;		/* 8 */ '-','|','|','-','|','|','-',&lt;br /&gt;		/* 9 */ '-','|','|','-','|',' ','-',&lt;br /&gt;&lt;br /&gt;	};&lt;br /&gt;	&lt;br /&gt;	/* iterators */&lt;br /&gt;	int i, j, k;&lt;br /&gt;	&lt;br /&gt;	while(scanf("%d %s", &amp;s, &amp;digitString) != EOF) {&lt;br /&gt;		&lt;br /&gt;		/* 0, ends the program */&lt;br /&gt;		if (!s) {&lt;br /&gt;			return 0;&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		int n = strlen(digitString);&lt;br /&gt;		int digit;&lt;br /&gt;		&lt;br /&gt;		for (i = 0; i &lt; 2*s+3; i++) {					&lt;br /&gt;			for (j = 0; j &lt; n; j ++) { &lt;br /&gt;						&lt;br /&gt;				digit = digitString[j] - '0';&lt;br /&gt;&lt;br /&gt;				/* upper, middle and lower parts */&lt;br /&gt;				if ((i % (s + 1)) == 0) {&lt;br /&gt;					printf(" ");&lt;br /&gt;					for (k = 0; k &lt; s; k++) {&lt;br /&gt;						printf("%c", conversionTable[digit][(i / (s + 1)) * 3]);&lt;br /&gt;					}&lt;br /&gt;					printf(" ");&lt;br /&gt;				}&lt;br /&gt;				&lt;br /&gt;				/* between upper and middle parts */&lt;br /&gt;				if (i &gt; 0 &amp;&amp; i &lt; (s + 1)) {&lt;br /&gt;					printf("%c", conversionTable[digit][2]);&lt;br /&gt;					for (k = 0; k &lt; s; k++) {&lt;br /&gt;						printf(" ");&lt;br /&gt;					}&lt;br /&gt;					printf("%c", conversionTable[digit][1]);&lt;br /&gt;				}&lt;br /&gt;&lt;br /&gt;				&lt;br /&gt;				/* between middle and lower parts */&lt;br /&gt;				if (i &gt; (s + 1) &amp;&amp; i &lt; (2*s + 2)) {&lt;br /&gt;					printf("%c", conversionTable[digit][5]);&lt;br /&gt;					for (k = 0; k &lt; s; k++) {&lt;br /&gt;						printf(" ");&lt;br /&gt;					}&lt;br /&gt;					printf("%c", conversionTable[digit][4]);&lt;br /&gt;				}&lt;br /&gt;				&lt;br /&gt;				/* if not the last number */&lt;br /&gt;				if (j != n-1)&lt;br /&gt;					printf(" ");&lt;br /&gt;	&lt;br /&gt;			}			&lt;br /&gt;			printf("\n");&lt;br /&gt;			&lt;br /&gt;		}&lt;br /&gt;		printf("\n");&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>Tue, 18 Mar 2008 09:16:55 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5244</guid>
      <author>jmftrindade (Joana M. F. da Trindade)</author>
    </item>
  </channel>
</rss>
