UCF Local Programming Contest 2019(Practice)
A. Buying in Bulk
思路:2个以上的五篇每个减去2
code:
#include<iostream>
using namespace std;
int main()
{
int c,p;
cin>>c>>p;
cout<<c*p-(c-1)*2<<endl;
return 0;
}
B. Are We Stopping Again?
思路:容斥定理,注意一下的边界的取值,如果到终点的时候需要加油或吃东西,就不算要用车的次数,所以总距离a要-1
code:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
a-=1;
int ans=a/b+a/c-a*(__gcd(b,c))/(b*c);
cout<<ans<<endl;
return 0;
}
C. Spell Checker
思路:这个题wa到自闭,不过还好最后做出来了,就暴力枚举一下字典中的每一个单词,注意一下,置换这个操作就行,举个例子 thu 和 tuh是置换 thu 和tug不是置换
code:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;
string s[N];
int main()
{
int d,n;
cin>>d;
for(int i=0;i<d;i++){
cin>>s[i];
}
string str;
cin>>n;
while(n--){
cin>>str;
bool flag1=0,flag2=0;
for(int i=0;i<d;i++){
if(str==s[i]){
cout<<str<<endl;
cout<<"CORRECT"<<endl;
puts("");
flag1=1;
break;
}
}
if(flag1) continue;
// cout<<"***"<<endl;
cout<<str<<endl;
for(int i=0;i<d;i++){
int cnt=0;
int a[20];
int num=0;
if(s[i].size()==(str.size()+1)){
for(int j=0,k=0;j<s[i].size()&&k<str.size();){
if(s[i][j]==str[k]) j++,k++;
else{
j++;
num++;
}
}
if(num<=1){
flag2=1;
cout<<"ONE LETTER OMITTED FROM "<<s[i]<<endl;
}
}
else if((s[i].size()+1)==str.size()){
for(int j=0,k=0;j<s[i].size()&&k<str.size();){
if(s[i][j]==str[k]) j++,k++;
else{
k++;
num++;
}
}
if(num<=1){
cout<<"ONE LETTER ADDED TO "<<s[i]<<endl;
flag2=1;
}
}
else if(s[i].size()==str.size()){
for(int j=0;j<s[i].size();j++){
if(s[i][j]!=str[j]) {
num++;
a[cnt++]=j;
}
}
if(num==1){
cout<<"ONE LETTER DIFFERENT FROM "<<s[i]<<endl;
flag2=1;
}
else if(num==2&&a[1]-a[0]==1&&s[i][a[0]]==str[a[1]]&&s[i][a[1]]==str[a[0]]){//注意置换的条件
cout<< "TWO LETTERS TRANSPOSED IN "<<s[i]<<endl;
flag2=1;
}
}
}
if(flag2) cout<<endl;
if(!flag1&&!flag2){
cout<<"UNKNOWN"<<endl;
cout<<endl;
}
}
return 0;
}
D. Circles Inside a Square
思路:看下面的图可知
code:
#include<iostream>
#include<cmath>
using namespace std;
double ans=0;
int main()
{
double r;
cin>>r;
double a=(2*sqrt(3)+2*sqrt(2)+2)*r/sqrt(2);
ans=a*a;
printf("%.5f\n",ans);
}