11.9模拟训练

· · 个人记录

T1
根据题意简单模拟即可,注意循环范围为2~s.length()-2

Code:

#include<iostream>
#include<string>
using namespace std;
int n,ans;
string s;
int main(){
    cin>>n>>s;
    for(int i=0;i<n-2;i++){
        if(s[i]=='#' && s[i+1]=='.' && s[i+2]=='#') ans++;
    }
    cout<<ans;
    return 0;
}

T2
同样根据题意模拟,注意以下几点:

1.从(0,0)开始,还要回到(0,0)
2.输入要开long long,否则可能导致在计算过程中爆int,再sqrt就会变成无限小(nan)
Code:

#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
long long t,x,y,xx,yy;
double ans;
int main(){
    cin>>t;
    t--;
    cin>>x>>y;
    ans+=sqrt((0-x)*(0-x)+(0-y)*(0-y));
    xx=x;
    yy=y;
    while(t--){
        cin>>x>>y;
        ans+=sqrt((xx-x)*(xx-x)+(yy-y)*(yy-y));
        xx=x;
        yy=y;
    }
    ans+=sqrt((xx-0)*(xx-0)+(yy-0)*(yy-0));
    cout<<fixed<<setprecision(10)<<ans;
    return 0;
}