新生35场

2022/1/30 23:10:53

本文主要是介绍新生35场,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

苹果消消乐,选择计算

苹果消消乐:

题目描述

有L个苹果和香蕉排成一条直线,其中有N个香蕉,你可以使用至多M次魔法道具将香蕉变成苹果,最后“最长的连续苹果数量”即为你本次苹果消消乐的得分。
给定苹果和香蕉的排列,求你能获得的最大得分。
 

输入

第一行是3个整数N、M和L,表示香蕉的数量,魔法道具使用次数,以及苹果和香蕉的总数。
第二行包含N个整数a1, a2, ... aN(1 <= a1 < a2 < ... < aN<= L),表示第a1, a2, ... aN个位置上摆放的是香蕉,其余位置摆放的都是苹果。
 

输出

输出通过使用魔法道具后你能获得的最大得分。

样例输入 Copy

5 2 100
10 30 55 56 90

样例输出 Copy

59

提示

【样例1解释】
消掉55和56两个香蕉,从31到89都是苹果,所以连续苹果数量为59

【数据范围】
对于30%的数据,1<=L<=100,0<=N,M<=10
对于70%的数据,1<=L<=50000,0<=N,M<=1000
其中有20%的数据,M=0
另有10%的数据,N<=M
对于100%的数据,1<=L<=1000000,0<=N,M<=100000 这个题因为是连续的,所以好写不少...就这我还没ac...最后被人提点了一下,发现最后端点还需要+1
#include<iostream>
using namespace std;
const int N=1e6+10;
int a[N];
int main(){
    long long int n,m,l,x,y,maxn=0;
    cin>>n>>l>>m;
    for(int i=1;i<=n;i++) 
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        x=a[i+l]-a[i-1]-1;
        maxn=max(maxn,x);
    }
    y=m+1-a[n-l]-1;
    if(maxn<y)
        maxn=y;
    cout<<maxn<<endl;
    return 0;
}

选择计算:

题目描述

输入三个整数x,y,z。 
根据z的值的不同对x和y进行计算: 
z=1:输出x中的第y个素数,若x中不足y个素数,输出x中最大的素数。
z=2:输出x和y的最大公约数 
z=3:输出x和y的最小公倍数 
 

输入

只有一行,包括三个整数,x,y,z,其中2<=x,y<=100000,1<=z<=3,相邻的两个数之间用空格符隔开。

输出

只有一个数,表示计算后的值

样例输入 Copy

100 80 2

样例输出 Copy

20
这个没啥难度,就是longlong存就好了,但为什么n,m也需要longlong...这个不是没超吗。。。
#include<iostream>
#include<cstring>
using namespace std;
typedef long long int ll;
ll gcd(ll m,ll n)
{
    if(m%n==0)
          return n;
     else
          return gcd(n,m%n);
}
ll gsy(ll m,ll n)
{
     return m*n/gcd(m,n);
}
ll ss(ll n)
{
     if(n<2) return 0;
     for(int i=2;i<=n/i;i++)
          if(n%i==0)
               return 0;
     return 1; 
}
int main(){
     ll x,y,z,t=0,flat;
     cin>>x>>y>>z;
     if(z==2)
          cout<<gcd(x,y)<<endl;
     else if(z==3)
          cout<<gsy(x,y)<<endl;
     else if(z==1)
     {
      for(int i=2;i<=x;i++)
      {
           if(ss(i))
           {    
        t++;
        flat=i;
           }
           if(t==y)
        {
         cout<<i<<endl;
         break;
        }
      }
      if(t<y)
       cout<<flat<<endl;
 }
}

 



这篇关于新生35场的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程