FJNU2019年低年级程序设计大赛题解(全)

本文详细解析了FJNU2019年低年级程序设计大赛中的五个问题,包括暴力求解、快速幂、防止爆炸的隔板问题、过桥问题和商品销售策略,涉及算法和逻辑思考。
摘要由CSDN通过智能技术生成

问题 A: 你们要的暴力

时间限制: 1 Sec 内存限制: 128 MB
题目描述:

已知某个数 x 的因子个数小于3个,那么称这个数 x 为good number。

现在给你一段区间 [L,R] ,问你区间内是否存在good number

区间[L,R]表示区间内元素为 L,L+1,L+2,。。。。R-1, R;

1<= L<=R <= 1e9,保证L和R的差值不超过500

输入:

多组数据,每组数据包含两个整数L和R表示区间 [L,R];

输出:

输出一行。
如果存在good number 输出 YES,否则输出 NO

样例输入:

7 8

8 9

样例输出

YES
NO

题解:本场比赛五个签到题中的一个,放在A题这个位置挺好的。 首先某个数 x 的因子个数小于3个,那就是说这个数是否为素数,我们过的判断是否为素数的复杂度为O( n \sqrt n n ),n最大为1e9。我们先考虑这个题的数据范围L~R不超过500,因此最大复杂度为O(500 1 e 9 \sqrt {1e9} 1e9 ),复杂度可以接受。只要掌握素数的判断方法就好了。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
bool check(int x){
   
    for(int i = 2;i * i <= x;i++){
   
        if(x % i == 0) return false;
    }
    return true;
}
int main(){
   
    int l,r;
    while(~scanf("%d %d",&l,&r)){
   
        int flag = 0;
        for(int i = l;i <= r;i++){
   
            if(check(i)) flag = 1;
        }
        if(flag) puts("YES");
        else puts("NO"); 
    }
}

问题 B: 小胖的场外求救

时间限制: 1 Sec 内存限制: 512 MB
题目描述:
在这里插入图片描述
输入:

单组数据
输入A, B意思如上
接下来一行,输入Q,意思如上。
接下来Q行,每行一个n。
数据范围:
P = 1e9 + 7,A,B< 1e5,Q<=1e5,n<=1e8;

输出:

输出Q行,每行一个答案

样例输入:

2 1 2
1
2

样例输出:

1
3

题解:
这也是本场比赛五个签到题中的一个,来上过我们课的人都应该写出来了,这就是快速幂的裸题。按照公式写一个快速幂就完事了,注意取模完相见有可能会减出负数,记得取mod前先 + mod;

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
ll qpow(ll a,ll b){
   
    ll res = 1;
    while(b){
   
        if(b & 1) res = res 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值