PAT 1094 谷歌的招聘 分数 20分 知识点:求素数 ,字符串转整数

94 阅读1分钟

1094 谷歌的招聘 - PAT (Basic Level) Practice (中文) (pintia.cn)

认真读题,发现题目说的比较复杂,其实就是简单求素数,中间进行整数字符串转换问题

关于字符串转整数可以用 atoi(),stoi(),stringsttream,atoi()是c语言的函数,不可以把string转为整数,所以只能用stoi(),stoi()是c++的函数。当然也可以用stringstream,我下面给了两个版本的代码。

坑点:

image.png image.png

stringstream

#include<iostream>
#include<string>
#include<cmath>
#include<sstream>
using namespace std;
bool isprime(int num)
{
    if (num == 0 || num == 1) return false;
    for(int i=2;i<=sqrt(num);i++)
    {
        if(num%i==0)return false;
    }
return true;
}
    int main()
{
    int l,k;cin>>l>>k;
     string s;
   cin>>s;


    for (int i = 0; i <= l - k; i++) {
    	  string t;
		  t=s.substr(i,k);
		 // int num=stoi(ss);
		  stringstream ss;
        int num=0;
        ss<<t;
        ss>>num;
		if(isprime(num))
	    {
	        cout<<t;
	        return 0;
	    }
    } 
	cout<<"404\n";
    return 0;
    
}

stoi

#include<iostream>
#include<string>
#include<cmath>
#include<sstream>
using namespace std;
bool isprime(int num)
{
    if (num == 0 || num == 1) return false;
    for(int i=2;i<=sqrt(num);i++)
    {
        if(num%i==0)return false;
    }
return true;
}
    int main()
{
    int l,k;cin>>l>>k;
     string s;
   cin>>s;


    for (int i = 0; i <= l - k; i++) {
    	  string t;
          t=s.substr(i,k);
	  int num=stoi(ss);
		if(isprime(num))
	    {
	        cout<<t;
	        return 0;
	    }
    } 
	cout<<"404\n";
 
    return 0;
    
}