算法练习11&部分题&&贪心思想专题

问题 A: XP的素数

题目描述
XP最近对素数很痴迷,特别是那些特殊的素数,其中有一类素数被称为孪生素数。其定义如下:如果一个数k是素数,k+2也是素数,那么k和k+2成为一对孪生素数。请计算一个给定区间m和n(0<m<n)中孪生素数对的个数。
输入
单组输入数据
m n
(0<m<n<1000)
输出
请输出一行结果:区间[m,n]中孪生素数对的个数
在这里插入图片描述

#include<bits/stdc++.h>

#define ll long long
const int N=1005;
#include<bits/stdc++.h>
using namespace std;
int coun;
int s;
int a[N];
int prime(int n){
   //判断素数
    if(n==1)//注意输入的数据,如果为1则不是素数
        return 0;
     for(int j=2;j<=sqrt(n);j++){
   //调用平方根函数,减少时间
            if(n%j==0){
   
                return 0;
            }
        }
        return 1;
}
int main(){
   
    int m,n;
    int cou=0;
    cin>>m>>n;
    for(int i=m;i+2<=n;i++){
   
       if(prime(i)&&prime(i+2))
            cou++;
    }
    cout<<cou<<endl;
return 0;
}

问题 B: XP的三角形

题目描述
XP最喜欢的图形是三角形,最近他在研究直角三角形,他想到这么一个问题,如果三边长{a,b,c}均为整数的直角三角形周长为p,(a<=b<=c)当p = 120时,恰好存在三个不同的解:{a=20,b=48,c=52}, {a=24,b=45,c=51}, {a=30,b=40,c=50}。现在给定一个p求不同的解的个数。(p<=1000)
输入
单组输入数据

p

输出
输出一行结果
在这里插入图片描述

#include<bits/stdc++.h>

#define ll long long
const int N=1005;
#include<bits/stdc++.h>
using namespace std;
int coun;
int s;
int a[N];

int main(){
   
    int p,ct=0;
    cin>>p;
    for(int i=1;i<p;i++){
   
        for(int j=i;j<p;j++){
   
            if((i*i+j*j)==(p-i-j)*(p-i-j)){
   
                ct++;
            }
        }
    }
    cout<<ct<<endl;
return 0;
}

问题 C: XP的点滴

题目描述
XP一不留神感冒了,于是跑到校医院打点滴。打点滴真是无聊啊,他看到盐水一滴一滴地滴下来,突然想到一个问题:如果盐水有规律地滴下,先滴一滴,停一下;然后滴二滴,停一下;再滴三滴,停一下…,假设这瓶盐水一共有n毫升,每一滴是y毫升,每一滴需要的时间是一秒(假设最后一滴不到y毫升,需花费的时间也算一秒),停一下的时间也是一秒。请问XP多久能挂完这瓶盐水呢?
输入

单组输入数据

n y (0<n,y<=1000)

输出
输出一行结果
在这里插入图片描述

#include<bits/stdc++.h>

#define ll long long
const int N=1005;
#include<bits/stdc++.h>
using namespace std;
int coun;
int s;
int a[N];
//这里是每滴一滴就是1秒
int main(){
   
    int n,y,sm=0;
    int ct=0;
    cin>>n>>y;
   int  tim = ceil(n*1.0/y);//向上取整,比如ceil(1.2)=2,用来解决问题中最后一滴,剩余而不足Y毫升
   if(tim==1){
   //如果不足Y毫升就输出,结束程序
    cout<<tim<<endl;
    return 0
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值