Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
26 და 28 მარტს დამუშავებული
მოცემული არაცარიელი სტრიქონისთვის, რომლის სიგრძე არ აღემატება 1000-ს და რომელიც შედგება მხოლოდ მცირე ზომის ლათინური ასოებოსგან დავადგინოთ ამ სტრიქონიდან სიმბოლოთა ყველა შესაძლო გადანაცვლებით მიღებული განსხვავებული სტრიქონების საერთო რაოდენობა. პასუხი გამოვიტანოთ მოდულით 1000000007 #include <iostream> using namespace std; int D[26],M=1000000007; int BP(int a,int n) { long P=1,A=a; while(n>1) { if(n&1)P*=A; A*=A; A%=M; P%=M; n>>=1; } P*=A; return P%M; } int main() { string S; cin>>S; int i,N=S.size(),L=1,k=1; long Mr=1,Mn=1; for(i=0;i<N;i++) D[S[i]-'a']++; for(i=0;i<26;i++)cout<<' '<<D[i]; cout<<endl; for(i=0;i<26;i++,k=1) while(D[i]--) { Mr*=L++; Mn*=k++; Mr%=M; Mn%=M; } if(Mr%Mn==0)cout<<Mr/Mn; else { Mn=BP(Mn,M-2); Mr*=Mn; Mr%=M; cout<<Mr; } }
run
|
edit
|
history
|
help
0
Tree
Chinu
code
point to a rvalue
MoveBubble
Binary Tree
Six Trigonometric Functions
anagram
Binary search2
Kth smallest element