3个水题(分别是枚举,if选择,枚举)

1.转折点(target)

【题目描述】

天天和元元在整理近三十年的人口数据,整理过程中元元发现一些重大事件对应着人口转折点,比如发生了旱灾会导致人口低谷(比前后两个月都低);或是出国轨道的建设完成对应着人口波峰(比前后两个月都高)。

其严格数学定义如下:

所有的人口数据按时间排列为A1~AN,若存在1<i<N,使得Ai>Ai-1且Ai>Ai+1,即为人口波峰;若存在1<i<N,使得Ai<Ai-1且Ai<Ai+1,即为人口低谷;两者都为转折点。

为了验证元元的猜想,天天计划统计出数据中的所有转折点,再去找是否有对应的事件来影响人口,请帮助天天统计这些数据中一共有多少个转折点。

【输入格式】

第一行一个整数N。

第二行N个由空格分隔的整数Ai。

【输出格式】

一行一个整数,表示转折点的数量。

【样例输入输出】

In

Out

Explanation

Sample 1

5

1 3 2 4 5

2

3为波峰,2是低谷。

Sample 2

7

1 3 4 5 5 3 1

0

没有转折点

【数据范围】

1≤N≤104,1≤Ai≤109

就很简单了,枚举一下。哪个是波峰,哪个是低谷。用for循环,加个if语句就行了。(if判断是否前面一个后面一个大于或小于就行了)

代码:

#define ll long long
using namespace std;
ll n,i,a[10005],sum;
signed main() {
    cin>>n;
    for(i=1; i<=n; i++)
        cin>>a[i];
    for(i=2; i<n; i++) {
        if(a[i]>a[i-1]&&a[i]>a[i+1])sum++;
        if(a[i]<a[i-1]&&a[i]<a[i+1])sum++;
    }
    cout<<sum;
}

2.模拟计算(calc)

【题目描述】

天天最近在学习计算器的编程,但是他发现处理运算符和字符串实在是太困难了,所以他打算从简单的单运算符计算开始。

他只处理四种运算符:‘+’、‘-’、‘*’、‘/’,也即对应加法,减法,乘法,除法,他希望程序能够处理出运算后的结果。

【输入格式】

一个运算符(只会是体面上指定的四种运算符之一)和两个整数x,y,以空格作为分隔,如遇减法或除法,则x为被减数/被除数。

【输出格式】

一行一个数字,表示运算的结果,统一保留两位小数。

【样例输入输出】

In

Out

Explanation

Sample 1

+ 2 13

15.00

2+13=15

Sample 2

/ 5 2

2.50

5/2=2.5

【数据范围】

1≤x,y≤104

比刚才还要简单...switch一下加减乘除就行了。

代码:

#include <bits/stdc++.h>
using namespace std;
char s;
double x,y,sum;
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>s>>x>>y;
    switch(s) {
        case '+':
            sum=x+y;
            break;
        case '-':
            sum=x-y;
            break;
        case '*':
            sum=x*y;
            break;
        default:
            sum=x/y;
            break;
    }
    printf("%.2lf",sum);
}

3.相关数(rela)

【题目描述】

天天最近迷上了13这个数字,他日夜痴迷的研究这个数字,让他对13的相关数有了非常高的水平,所以元元打算考一考天天。

*如果一个数是13的倍数或一个数中含有‘13’,则它是13的相关数;例如131,26都是13的相关数,而123,25不是。

元元将会给出一个区间[n,m],由天天来计算这其中13相关数的个数,并请你帮忙验证。

【输入格式】

一行两个整数n,m。

【输出格式】

一行一个整数,表示13相关数的个数。

【样例输入输出】

In

Out

Explanation

Sample 1

13 27

2

只有13和26两个数字是13的相关数

Sample 2

120 132

3

130,131,132三个数字是13的相关数

【数据范围】

对于40%的数据,1≤n≤m≤100

对于100%的数据,1≤n≤m≤106

统计有me有13,或13的倍数。

代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m,i,sum,a[1000005];
bool rela(int x) {
    int xx,yy=0,i;
    xx=x;
    while(xx) {
        a[++yy]=xx%10;
        xx/=10;
    }
    for(i=yy; i>=2; i--)
        if(a[i]==1&&a[i-1]==3)return 1;
    return 0;
}
signed main() {
    cin>>n>>m;
    for(i=n; i<=m; i++) {
        if(rela(i)||i%13==0)
            sum++;
    }
    cout<<sum;
}

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值