你的飞碟在这儿Your Ride Is Here(难度:入门难度)
题目大意
emmmm 输入两个字符串,问他们每个字母的asco码相乘后字符串是否相等。
思路
一道水题?(雾)
错误代码:
#include<cstdio>
#include<cstring>
using namespace std;
char s1[10],s2[10];
int main()
{
scanf(" %s %s", s1+1,s2+1);
int len1=strlen(s1+1),len2=strlen(s2+1);
int ans1=1,ans2=1;
for(int i=1;i<=len1;i++)
ans1*=(s1[i]-'A'+1)%47;
for(int i=1;i<=len2;i++)
ans2*=(s2[i]-'A'+1)%47;
if(ans1==ans2)
printf("GO");
else
printf("STAY");
return 0;
}
注意ans1和ans2最后没有%47,所以最后的答案全部输出STAY,50分。
代码
#include<cstdio>
#include<cstring>
using namespace std;
char s1[10],s2[10];
int main()
{
scanf(" %s %s", s1+1,s2+1);
int len1=strlen(s1+1),len2=strlen(s2+1);
int ans1=1,ans2=1;
for(int i=1;i<=len1;i++)
ans1*=((s1[i]-64)%47);
for(int i=1;i<=len2;i++)
ans2*=((s2[i]-64)%47);
ans1%=47;
ans2%=47;
if(ans1==ans2)
printf("GO");
else
printf("STAY");
return 0;
}
贪婪的送礼者Greedy Gift Givers(难度:普及-)
题目大意
在一个聚会上,人们互相赠送钱,问聚会结束后每个人分别少了多少钱或多了多少钱。
思路
边读入边记录每个人的钱数,用结构体表示每个人的名字和他的钱数。模拟。
错误代码:
无
代码
#include<cstdio>
#include<cstring>
using namespace std;
int n;
struct node{
char name[20];
int sum;
}student[20];
int main()
{
scanf("%d", &n);
for(int i=1;i<=n;i++)
scanf(" %s", student[i].name);
for(int i=1;i<=n;i++)
{
char s[20];
int idx,mon,cnt,mon_aq,mon_af,idx1;
scanf(" %s", s);
for(int j=1;j<=n;j++)
if(strcmp(s,student[j].name)==0)
{
idx=j;
break;
}
scanf("%d%d", &mon, &cnt);
if(cnt==0)
continue;
mon_aq=mon/cnt;
mon_af=mon_aq*cnt;
student[idx].sum-=mon_af;
for(int j=1;j<=cnt;j++)
{
scanf(" %s", s);
for(int k=1;k<=n;k++)
if(strcmp(s,student[k].name)==0)
{
idx1=k;
break;
}
student[idx1].sum+=mon_aq;
}
}
for(int i=1;i<=n;i++)
printf("%s %d\n", student[i].name,student[i].sum);
}
黑色星期五Friday the Thirteenth(难度:普及-)
题目大意
从1900年到1900+n-1的时候每个月的13号是星期几。最后输出7个数,表示星期几
思路
直接通过每个月分的天数来统计即可。
错误代码:
无
代码
#include<cstdio>
using namespace std;
int n,last=3;
int month[12]={31,31,28,31,30,31,30,31,31,30,31,30};
int ans[7];
int main()
{
scanf("%d", &n);
for(int i=1900;i<=1899+n;i++)
{
if(i%400==0 || (i%100!=0 && i%4==0))
month[2]=29;
for(int j=0;j<12;j++)
{
last=(last+month[j])%7;
ans[last]++;
}
month[2]=28;
}
for(int i=0;i<7;i++)
printf("%d ", ans[(i+6)%7]);
return 0;
}