A—跳跃游戏
题目描述
输入与输出
样例
思路:
因为可以一次跳多个,所以只需要考虑最后一个平台与第一个平台比哪个高哪个低,如果第一个平台比最后一个平台高,则不可以跳过,若第一个平台比最后一个平台低,则可以跳过。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[1000000]={0};
for(int i=0;i<n;i++)
cin>>a[i];
if(a[0]<a[n-1])
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
B—数数
题目描述
输入与输出
样例
思路:
找1-n里面的完全平方数有几个
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
while (n--) {
int a;
cin >> a;
int sum = 0;
for (int i = 1; i <= a; i++) {
double k = sqrt(i);
if (k == (int)sqrt(i))
sum++;
}
cout << sum << endl;
}
return 0;
}
最开始的代码,但是容易运行超时
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)///循环t次
{
int a;
scanf("%d", &a);
int count, sum = 1;
for (int j = 1; j <= a; j++)///1-a开始找
{
count = 2;
for (int k = 2; k <= sqrt(j); k++) {///
if (j % k == 0) {
if (k == j/k &&k==sqrt(j)) {
count++;
} else {
count += 2;
}
}
if (count % 2 == 1) sum++;
}
}
printf("%d\n", sum);
} return 0;
}
C—操作数组
题目
输入与输出
样例
思路
让a[i]的数减去b[i]的数,结果正数与正数相加,负数与负数相加,若正数与负数的绝对值结果相同,输出正数,若不同,则无论如何都不饿能使a=b,输出-1。
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;cin>>n;
long long a[n],b[n];
for(long long i=0;i<n;i++)
cin>>a[i];
for(long long i=0;i<n;i++)
cin>>b[i];
long long c=0,d=0;
for(long long i=0;i<n;i++)
{
if(a[i]-b[i]<0) c=c+(a[i]-b[i]);
else d=d+(a[i]-b[i]);
}
if(abs(c)==d) cout<<d<<endl;
else cout<<-1<<endl;
}