[PAT][Basic level]1094

Keywords:
string ;str.size();str.substr(pos_begin,lenth);sstream;istringstream is; is>>num;

NOT AC CODE:(5/7)

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <sstream>
#include <cmath>
using namespace std;
bool isprime(int num);
int main()
{
    //freopen("sample_input.txt","r",stdin);
    int L,K;
    cin>>L>>K;

    bool flag_found =false;
    string str;
    cin>>str;
    for(int i = 0 ; i <= str.size()-K ; i++){
        string str_substr = str.substr(i,K);
        istringstream  is(str_substr);
        int num;
        is>>num;
        if(isprime(num)){
            flag_found = true;
           printf("%0d\n",num);
           break;
        }

    }
    if(!flag_found) cout<<"404"<<endl;
    return 0;
}
bool isprime(int num)
{
    if(num ==2 ||num ==3) return true;
    else{
        for(int i = 2 ; i <= sqrt(num) ; i++){
            if(num % i == 0) return false;
        }
    }

    return true;
}

version:2.0;(6/7)
解决了一个测试点:如果寻找的素数长度K 大于给定的字符串长度L,直接输出404:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <sstream>
#include <cmath>
using namespace std;
bool isprime(int num);
int main()
{
    //freopen("sample_input.txt","r",stdin);
    int L,K;
    cin>>L>>K;

    if( K > L){
        printf("404");
        return 0;
    }
    bool flag_found =false;
    string str;
    cin>>str;
    for(int i = 0 ; i <= str.size()-K ; i++){
        string str_substr = str.substr(i,K);
        istringstream  is(str_substr);
        int num;
        is>>num;
        if(isprime(num)){
            flag_found = true;
           printf("%d",num);
           break;
        }

    }
    if(!flag_found) cout<<"404";
    return 0;
}
bool isprime(int num)
{
    if(num ==0 ||num ==1) return false;
    if(num ==2 ||num ==3) return true;
    else{
        for(int i = 2 ; i <= sqrt(num) ; i++){
            if(num % i == 0) return false;
        }
    }

    return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值