文章

2

粉丝

277

获赞

5

访问

5.7k

头像
用最易理解的方法来解决,只用了数组。
P1493 北京航空航天大学2019年机试题
发布于2023年3月16日 14:32
阅读数 2.6k

没用到什么stl函数,按照小白的思维来做的。

#include <bits/stdc++.h>
using namespace std;
bool he (int a){  //判断是否为合数
    int flag=0;
    for(int i=2;i<=sqrt(a);i++){
        if(a%i==0){
            flag = 1;
            return true;
        }
    }
    if(flag==0){
        return false;
    }
}
int main(){
    int a,b;
    int s[10005]={0},c[10005]={0};
    cin>>a>>b;
    for(int i=a;i<=b;i++){ //将合数存入s数组中
        if(he(i)==true){
            s[i]=i;
        }
    }
    for(int i=a;i<=b;i++){  //将连续的合数标记为1,并存入c数组中
        if((s[i+1]-s[i])==1){
            c[i]=1;
            c[i+1]=1;
        }
    }
    int x=0;
    for(int i=a;i<=b+1;i++){
        if(c[i]==1){
            x++;
        }else{
            c[i-1]=x;     //统计每个连续合数段的长度,将长度存入c数组中
            x=0;
        }
    }
    int maxx=0,kk;
    for(int i=a;i<=b;i++){   //找出最长合数段
        if(c[i]>maxx){
            maxx=c[i];
            kk=i;
        }
    }
    fo...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发