文章

18

粉丝

0

获赞

82

访问

3.7k

头像
最简真分数 题解:求助。为啥不能AC?
P1180 北京大学/北京航空航天大学机试题
发布于2026年2月8日 10:32
阅读数 234

//样例也可以正确输出,但是评测不通过是啥原因?我看有题解不需去重也能通过,按逻辑来说不应该要去重吗?

 

#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 条评论
牧濑
2026年2月11日 21:47

不能去重吧,首先两数重复但大于1时没影响,他们的gcd=本身,不是1,不会被加。
而两数同为1时,1/1不是真分数,确实有问题直接break。
而比如1,2,3,2,1,。第一个1分别和第一个2与第二个2共算两个最简真分数,你去掉一个2就少了一个。

赞(0)
回复给: