Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main()
- {
- int a[24] = { 0 };
- char s[12];
- char badWords[20][12];
- int n;
- scanf("%s",&s);
- scanf("%d",&n);
- for(int i=0;i<n;++i){
- scanf("%s",badWords[i]);
- }
- for(int i=0;i<strlen(s);++i){
- a[s[i]-'a']++;
- }
- int denom = calcDenom(a,s);
- int badAnagramCount =0;
- int totalAnagramCount = fact(strlen(s))/denom;
- for(int i=0;i<n;++i){
- int b[24];
- for(int j=0; j<24; j++){
- b[j] = a[j];
- }
- for(int j=0;j<strlen(badWords[i]);++j){
- b[badWords[i][j]-'a']--;
- }
- int d = calcDenom(b,s);
- badAnagramCount += fact(strlen(s)-strlen(badWords[i])+1)/d;
- }
- printf("%d",(totalAnagramCount-badAnagramCount));
- return 0;
- }
- int calcDenom(int a[], char s[]){
- int denom =1;
- for(int i=0;i<24;++i){
- if(a[i]>1){
- denom = denom * fact(a[i]);
- }
- }
- return denom;
- }
- int fact(int n){
- unsigned long long factorial = 1;
- if (n <= 0)
- return 1;
- else
- {
- for(int i=1; i<=n; ++i){
- factorial *= i;
- }
- return factorial;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement