1.2.1 Your Ride Is Here 你的飞碟在这
字符串处理,把飞碟和组名的编号记下来,比一下就行了
C++ Code:
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("ride.in","r",stdin);//读文件
freopen("ride.out","w",stdout);
string a,b;
cin>>a>>b;
int u=1,x=1;
//for(int i=0;i<a.length();i++) cout<<a[i]-64<<' ';
for(int i=0;i<a.length();i++) u=u*(a[i]-64)%47;//计算
for(int i=0;i<b.length();i++) x=x*(b[i]-64)%47;
//cout<<u<<' '<<x;
if(x==u) cout<<"GO\n";
else cout<<"STAY\n";
return 0;
}
1.2.2 Greedy Gift Givers 贪婪的送礼者
简单模拟,用map记录每个人当前的钱数
#include<bits/stdc++.h>
using namespace std;
map<string,int> ma;
int main()
{
freopen("gift1.in","r",stdin);//读文件
freopen("gift1.out","w",stdout);
int n;
cin>>n;
string a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
ma[a[i]]=0;
}
for(int o=0;o<n;o++)
{
string k;
int num,money;
cin>>k>>money>>num;
int give;//给每个人的钱数
if(num==0)
{
give=0;
ma[k]+=money;
}
else
{
give=money/num;
ma[k]-=(give*num);
}
while(num--)
{
string name;
cin>>name;
ma[name]+=give;
}
}
for(int i=0;i<n;i++) cout<<a[i]<<' '<<ma[a[i]]<<'\n';
return 0;
}
1.2.3 Friday the Thirteenth 黑色的星期五
真·简单模拟,把每一年每一月的星期加一下
注意输出的顺序,不是按星期一到星期天
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("friday.in","r",stdin);
freopen("friday.out","w",stdout);
int y,month,i,n,last=3,days[12]={31,31,28,31,30,31,30,31,31,30,31,30},re[7]={0};
cin>>n;
for(y=1900;y<1900+n;y++)
{
if(y%400==0||(y%100!=0&&y%4==0)) days[2]=29;//闰年2月天数要变
for(month=0;month<12;++month)
{
last=(last+days[month])%7;
re[last]++;
}
days[2]=28;
}
for(i=0;i<6;++i) cout<<re[(i+6)%7]<<' ';
cout<<re[5]<<'\n';
return 0;
}
1.2.3 Friday the Thirteenth 黑色的星期五
枚举每一个位置,然后把断开后的数量比大小
但要注意,这是个环,处理好下标的位置
#include<bits/stdc++.h>
using namespace std;
string a;
int f(int x)
{
int s=0;
char a1=a[x],b2=a[x+1];
for(int i=x;;i--)
{
if(a[i]==a1)s++;
else if(a[i]=='w') s++;
else break;
}
for(int i=x+1;;i++)
{
if(a[i]==b2)s++;
else if(a[i]=='w') s++;
else break;
}
return s;
}
int main()
{
int ans=-1,n;
cin>>n>>a;
a=a+a+a;
for(int i=n;i<2*n;i++)
{
if(a[i]==a[i+1]) continue;
if(a[i]=='w')
{
a[i]='r';
ans=max(ans,f(i));
a[i]='b';
ans=max(ans,f(i));
a[i]='w';
}
ans=max(ans,f(i));
}
ans=min(ans,n);
if(ans==-1) cout<<n<<'\n';
else cout<<ans<<'\n';
return 0;
}