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;
}