// 9.22 第一章刷完 =_=刚开学事物繁忙
Your Ride Is Here
思路:字母转数字乘起来一mod就可以了
/*
ID: a7823962
PROG: ride
LANG: C++
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
string s1,s2;
int main()
{
freopen("ride.in","r",stdin);
freopen("ride.out","w",stdout);
int n=1,m=1;
cin>>s1>>s2;
for (int i=0;i<s1.size();i++)
n=n*(s1[i]-'A'+1)%47;
for (int i=0;i<s2.size();i++)
m=m*(s2[i]-'A'+1)%47;
if (n==m) cout<<"GO"<<endl;
else cout<<"STAY"<<endl;
}
Greedy Gift Givers
思路:很直接的模拟,算一下能每个人分给别人多少钱(整除),以及分剩的归自己
*需要注意的是人数可能为0 ,会崩,需要特判下。
/*
ID: a7823962
PROG: gift1
LANG: C++
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<map>
using namespace std;
string s[30],f;
int n,mon,yu;
map<string,int>vis;
int main()
{
freopen("gift1.in","r",stdin);
freopen("gift1.out","w",stdout);
cin>>n;
for (int i=1;i<=n;i++)
cin>>s[i];
for (int i=1;i<=n;i++)
{
string ss;int sum,m;
cin>>ss>>sum>>m;
if (m!=0) mon=sum/m;
yu=sum-mon*m;
vis[ss]-=sum;
vis[ss]+=yu;
for (int j=1;j<=m;j++)
{
cin>>f; vis[f]+=mon;
}
}
for (int i=1;i<=n;i++)
{
cout<<s[i]<<' '<<vis[ s[i] ]<<endl;
}
}
Friday the Thirteenth
思路:先预处理每月天数,用judge判是否为闰年二月,是的话加一天。
之后就天数和星期一直++,满天数或月数,就往月,年上加。
再就是从周六开始输出。
/*
ID: a7823962
PROG: friday
LANG: C++
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<map>
using namespace std;
int n;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int vis[90];
bool judge(int i,int mo)
{
if (mo!=2) return 0;
if (i%400==0) return 1;
if (i%100!=0 && i%4==0 )return 1;
return 0;
}
int main()
{
freopen("friday.in","r",stdin);
freopen("friday.out","w",stdout);
cin>>n; n+=1900;
int year=1900,mo=1,week=0,day=0;
while(year<n)
{
day++;
week=week%7+1;
if (day==13) vis[week]++;
if (day>mon[mo]+judge(year,mo))
{
day=1; mo++;
if (mo>12)
{
mo=1; year++;
}
}
}
for (int i=5;i<=11;i++)
{
if (i==5) cout<<vis[i+1];// 开始忘了+1了 应该从周六开始
else cout<<' '<<vis[i%7+1];
}cout<<endl;
}
Broken Necklace
思路:从每个节点 像左右统计最大延伸个数,加起来取个max
由于我预处理时将 s 变成s+s+s , 当全是一个颜色时结果一定会大于总数,
所以大于N时变为N.
/*
ID: a7823962
PROG: beads
LANG: C++
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<map>
using namespace std;
int n,sum=0;
string s;
int main()
{
freopen("beads.in","r",stdin);
freopen("beads.out","w",stdout);
cin>>n>>s;
int z=1,sum=0;
s=s+s+s;
for (int i=n;i<n*2;i++)
{
int l=i,r=i+1;
char lc=s[i],rc=s[i+1];
while(l>0)
{
if (lc=='w' && s[l]!='w') lc=s[l];// 血崩 把此处l 错打成i
if (s[l]=='w' || s[l]==lc) l--;
else
{
l++;break;
}
}
while(r<s.size())
{
if (rc=='w' && s[r]!='w') rc=s[r];// 把此处r 错打成i
if (s[r]=='w' || s[r]==rc) r++;
else
{
r--; break;
}
}
sum=max(sum,r-l+1);
}
if (sum>n) sum=n;
cout<<sum<<endl;
} // WA*1