Advertisement
daltond124

Untitled

Oct 13th, 2019
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int a[24] = { 0 };
  6. char s[12];
  7. char badWords[20][12];
  8. int n;
  9. scanf("%s",&s);
  10. scanf("%d",&n);
  11. for(int i=0;i<n;++i){
  12. scanf("%s",badWords[i]);
  13. }
  14. for(int i=0;i<strlen(s);++i){
  15. a[s[i]-'a']++;
  16. }
  17. int denom = calcDenom(a,s);
  18. int badAnagramCount =0;
  19. int totalAnagramCount = fact(strlen(s))/denom;
  20. for(int i=0;i<n;++i){
  21. int b[24];
  22. for(int j=0; j<24; j++){
  23. b[j] = a[j];
  24. }
  25. for(int j=0;j<strlen(badWords[i]);++j){
  26. b[badWords[i][j]-'a']--;
  27. }
  28. int d = calcDenom(b,s);
  29. badAnagramCount += fact(strlen(s)-strlen(badWords[i])+1)/d;
  30. }
  31. printf("%d",(totalAnagramCount-badAnagramCount));
  32. return 0;
  33. }
  34.  
  35. int calcDenom(int a[], char s[]){
  36. int denom =1;
  37.  
  38. for(int i=0;i<24;++i){
  39. if(a[i]>1){
  40. denom = denom * fact(a[i]);
  41. }
  42. }
  43. return denom;
  44. }
  45. int fact(int n){
  46. unsigned long long factorial = 1;
  47.  
  48. if (n <= 0)
  49. return 1;
  50. else
  51. {
  52. for(int i=1; i<=n; ++i){
  53. factorial *= i;
  54. }
  55. return factorial;
  56. }
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement