【usaco】1.1

你的飞碟在这儿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;
}

猜你喜欢

转载自www.cnblogs.com/Wolfbeyond/p/10460331.html