文章
18
粉丝
0
获赞
82
访问
3.7k
//样例也可以正确输出,但是评测不通过是啥原因?我看有题解不需去重也能通过,按逻辑来说不应该要去重吗?
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
if(b==0) return a;
else return gcd(b,a%b);
}
int main(){//最简真分数的性质:最大公约数为1
int n;
while(cin>>n){
if(n>600||n<=1) continue;
vector<int> v(n);
for(int i=0;i<n;i++){
cin>>v[i];
}
//元素去重,如:1,2,3,2,1.
sort(v.begin(), v.end());//排序
auto it = unique(v.begin(), v.end());
v.erase(it, v.end());//删除
int counts=0;
for(int i=0;i<v.size();i++){
for(int j=i+1;j<v.size();j++){
&...
登录后发布评论
不能去重吧,首先两数重复但大于1时没影响,他们的gcd=本身,不是1,不会被加。
而两数同为1时,1/1不是真分数,确实有问题直接break。
而比如1,2,3,2,1,。第一个1分别和第一个2与第二个2共算两个最简真分数,你去掉一个2就少了一个。