pat a1063 set similarity-爱代码爱编程
本题的大意就是两个集合的交集除以两个集合的并集 结果用百分比表示并且保留一位小数
这道题主要需要注意的是输出 两个int转百分比需要强转成double 以及%的转义字符是两个%%比较特殊需要记忆
遇到一些疑惑的点就是多调试 试一试就知道行不行 不行就找bug学会就好了
ac代码:
#include<iostream>
#include<set>
using namespace std;
const int N=70;
set<int> p[N];
int main()
{
int n,m;
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>m;
for(int j=0;j<m;++j)
{
int x;cin>>x;
p[i].insert(x);
}
}
cin>>m;
while(m--)
{
int a,b;
cin>>a>>b;
int cnt=0;
for(auto s:p[a]) cnt+=p[b].count(s);
int count=p[a].size()+p[b].size()-cnt;
printf("%.1lf%%\n",(double)cnt/count*100);
}
return 0;
}