153
Posted: Sun Jun 23, 2002 12:01 am
can anybody think of a reason why this doesnt' work?
Code: Select all
#include <stdio.h>
unsigned ways;
int chars[26];
unsigned pos (char *str) {
unsigned i,ret,numforeach;
if (strlen(str)==2) {
chars[str[0]-'a']++;
chars[str[1]-'a']++;
if (str[0]!=str[1]) ways = 2; else ways = 1;
return (str[0]>str[1]) ? 1 : 0;
}
ret = pos(str + 1);
chars[str[0]-'a']++;
ways = (ways*strlen(str))/chars[str[0]-'a'];
numforeach = ways/strlen(str);
for (i=0; i+'a'!=str[0]; i++) {
ret += chars[i]*numforeach;
}
return ret;
}
int main () {
char cur[31];
while (scanf("%s\n", cur)==1) {
ways=0;
memset(chars, 0, sizeof(chars));
if (cur[0]=='#') break;
if (strlen(cur)>1) printf("%10u\n", pos(cur)+1);
else printf("%10u\n", 1);
}
return 0;
}