B. A Lot of Joy
time limit per test
2.0 s
memory limit per test
256 MB
input
standard input
output
standard output
Two boys Gena and Petya wrote on two strips of paper the same string s that consisted of lowercase Latin letters. Then each boy took one strip, cut it into small pieces so that each piece contained exactly one letter and put all pieces into his pocket. After that Gena and Petya repeated the following procedure until their pockets became empty: they took one piece from their pockets and rejoiced if the letters on these pieces were equal.
Determine the expected number of times the boys rejoiced during this process.
Input
The input contains the only string s which was initially written on Gena's and Petya's strips. The string has length between 1 and 200000, inclusively, and consists of lowercase Latin letters.
Output
Output the only real number — the expected number of times Gena and Petya rejoiced during their business. The absolute or relative error of the answer should not exceed 10 - 9.
Examples
input
Copy
abc
output
Copy
1.000000000000000
input
Copy
zzz
output
Copy
3.000000000000000
Examples
Input
abc
Output
1.000000000000000
Input
zzz
Output
3.000000000000000
题目连接:http://codeforces.com/gym/100187/problem/B
这种像水题的东西就用找规律的思想
abc == 1/3
aab ==5/3 ==4/3+1/3 这里4是2+2还是2*2不确定
aaa ==3 == 9/3=3*3/3 这样就找到规律了
#include<cstdio>
#include<cstring>
char str[200010];
int a[30];
int main()
{
int i;
scanf("%s",str);
int l=strlen(str);
memset(a,0,sizeof(a));
for(i=0;i<l;i++)
{
a[str[i]-'a']++;
}
double ans=0.0;
for(i=0;i<26;i++)
{
ans+=(double)a[i]*a[i]/l;
}
printf("%0.15lf\n",ans);
return 0;
}