吉大秦少游
2018-11-11 23:26
采纳率: 60%
浏览 1.2k

PAT乙级1059 C语言竞赛 测试点2通过不了,求助呀

 //1059 C语言竞赛 v1
#include <iostream>
#include <math.h>
using namespace std;

struct PaiMing{
    int rank;
    int id;
}pm[10001];     //save the competitors

int SushuJudge(int n){
    int flag=0,i;
    for(i=2;i<(int)sqrt(n)+1;i++){
        if(n%i==0)  flag=1;
    }
    return flag;    //flag==0,sushu
}

int main(){
    int N,i,K,j,tmp;    cin>>N;
    for(i=0;i<N;i++){
        pm[i].rank=i+1;
        cin>>pm[i].id;  //save the rank inf 
    }
    cin>>K; //save the check inf
    int cnt[10001]={0};

    for(i=0;i<K;i++){
        cin>>tmp;
        int cmp=0;
        for(j=0;j<N;j++){
            if(tmp==pm[j].id&&cnt[tmp]>0)   printf("%d: Checked\n",tmp);
            if(tmp==pm[j].id&&cnt[tmp]==0){
                printf("%04d: ",tmp);
                if(j==0)    printf("Mystery Award\n");  //rank first
                else if(SushuJudge(pm[j].rank)==0)  printf("Minion\n"); //rank sushu
                else    printf("Chocolate\n");  //others
                cnt[tmp]++; 
            }
            if(tmp!=pm[j].id){
                cmp++;
                if(cmp==N)  printf("%04d: Are you kidding?\n",tmp);
            }   
        }
    }
    return 0;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Italink 2018-11-12 03:33
    已采纳
     printf("%04d: Checked\n", tmp);
    
    点赞 评论
  • 神算子震 2019-09-02 07:19

    想知道楼主最后找到测试点二的原因了没?
    我也是测试的点二没通过

    图片说明

    #include<iostream>
    #include<map>
    #include<cmath>
    using namespace std;
    int  ispr(int n)
    {
        if(n==2||n==3)
        return 1;
        if(n%6!=1||n%6!=5)
        return 0;
        int tmp=sqrt(n);
        for(int i=5;i<tmp;i+=6)
        if(n%i==0||n%(i+2)==0)
        return 0;
        return 1;
    }
    int main()
    {
        int n,k,a;
        scanf("%d",&n);
        map<int,string>x;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a);
            if(i==1)
            {
                x[a]="Mystery Award";
                continue;
            }
            if(ispr(i))
            {
                x[a]="Minion";
            }
            else
            {
                x[a]="Chocolate";
            }
    
        }
        scanf("%d",&k);
        for(int i=0;i<k;i++)
        {
            scanf("%d",&a);
            map<int ,string>::iterator iter=x.find(a);
            if(iter!=x.end())
            {
                printf("%04d",a);
                cout<<": "<<iter->second<<endl;
                x[a]="Checked";
    
            }
            else 
            {
                printf("%04d: Are you kidding?\n",a);
            }
        }
        return 0;
    }
    
    点赞 评论