牛客练习赛17
链接:https://www.nowcoder.com/acm/contest/109/B
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
定义s中的某一位i为好的位置,当且仅当存在s的子序列
问s中是否所有的位置都是好的位置。
输入描述:
一行两个字符串s,x,这两个串均由小写字母构成。
1 <= |s|, |x| <= 200000
输出描述:
Yes表示是。
No表示不是。
输入
abab ab
输出
Yes
输入
abacaba aba
输出
No
输入
abc ba
输出
No
水题;
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d\n",((b/(int)sqrt(b*c/a))+(c/(int)(sqrt(b*c/a)))+((int)(sqrt(b*c/a))))*4);
}
链接:https://www.nowcoder.com/acm/contest/109/B
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
定义s中的某一位i为好的位置,当且仅当存在s的子序列
问s中是否所有的位置都是好的位置。
输入描述:
一行两个字符串s,x,这两个串均由小写字母构成。
1 <= |s|, |x| <= 200000
输出描述:
Yes表示是。
No表示不是。
输入
abab ab
输出
Yes
输入
abacaba aba
输出
No
输入
abc ba
输出
No
题意: 看字符串s是不是由多个x串组成的;
起先写了一个超时的代码,但不知道是应为时间超时导致的错误,就没有写了,很难受;
起初以为自己题目看错了,这个题目真心难懂
还有一部分原因时Kmp一直不会,唉!!!!
代码:
#include<bits/stdc++.h>
using namespace std;
char s1[200005],s2[200005];
int main() {
scanf("%s%s",s1,s2);
int len1=strlen(s1),len2=strlen(s2);
int first=0,last=len2-1;
int flag=1;
for (int i=0 ;i<len1 ;i++ ){
if (s2[first]!=s1[i] || s2[last]!=s1[len1-1-i]) {
flag=0;
break;
}
first++;
last--;
if (first==len2) first=0;
if (last==-1) last=len2-1;
}
if (flag) printf("Yes\n");
else printf("No\n");
}
链接:https://www.nowcoder.com/acm/contest/109/D
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
输入描述:
第一行一个整数T表示数据组数。
接下来n行,每行四个数lat1, lng1, lat2, lng2分别表示两个点的经纬度。
正数表示北纬和东经。
负数表示南纬和西经。
数据保证合法。
输出描述:
n行表示答案。
答案保留到米。
输入
1 43.466667 -80.516667 30.058056 31.228889
输出
802333
这道提主要是我跟本不知道怎么把经纬度转化;
还有输入是先纬度再经度,有个坑;
这是别人的代码;
代码:
#include<bits/stdc++.h>
using namespace std;
const double pi=acos(-1);
const double R=6371009;
double lat1,lat2,lng1,lng2,C,dis;
int t;
int main()
{
cin>>t;
while(t--){
cin>>lat1>>lng1>>lat2>>lng2;
C=R*sqrt(2-2*(sin(lat1*pi/180)*sin(lat2*pi/180)+cos(lat1*pi/180)*cos(lat2*pi/180)*cos((lng1-lng2)*pi/180)));
dis=2*asin(C/2/R)*R-C;
printf("%.0f\n",dis);
}
}