uscao专题1.1

本文介绍了四个USCAO专题题目,包括'你的飞碟在这儿'、'贪婪的送礼者'、'黑色星期五'和'破碎的项链'。第一题涉及字符串数字乘积的模运算,第二题需要模拟朋友互送礼物的过程,第三题计算特定日期落在一周中的次数,第四题是关于项链颜色分组的最大数量。解题思路分别涉及字符串处理、模拟、日期计算和遍历优化。
摘要由CSDN通过智能技术生成

uscao专题1.1

题目地址: http://wikioi.cn/training/mission/145
第一题 你的飞碟在这儿Your Ride Is Here
题目大意: 题目给定 两个字符串,而每个字符代表的是(A=1,Z=26),而字符串的数字代表他字符串里每个字母代表的数字的乘积。求这两个字符串的数字mod 47是否相等,如果相等就输出"GO",否则输出"STAY"。
解题思路: 先读入两个字符串,在求这两个字符串的长度,再用两个循环求每个字符串的数字(每个字符代表的数字就是这个字符减去"A"),在判断是否相等。
代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
   
    long long a=1,b=1,len1,len2; string ch,sh;
    cin>>ch>>sh; len1=ch.size(); len2=sh.size();
    for(int i=0;i<len1;i++)
    {
   
        int tmp=ch[i]-'A'+1;
        a=a*tmp%47;
    }
    for(int i=0;i<len2;i++)
    {
   
        int tmp=sh[i]-'A'+1;
        b=b*tmp%47;
    }
    if(a%47==b%47) cout<<"GO"<<endl;
    else cout<<"STAY"<<endl;
    return 0;
}

第二题 贪婪的送礼者Greedy Gift Givers
题目: 对于一群(NP个)要互送礼物的朋友,GY要确定每个人收到的钱比送出的多多少。在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。给出一群朋友,没有人的名字会长于 14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表,请确定每个人收到的比送出的钱多的数目。
解题思路: 开两个map数据结构一个是收到的钱,另一个是送出去的钱,在每次进行模拟给钱,最后判断一下就可以了。

#include<bits/stdc++.h>
using namespace std;
int n;
map <string,int> mp; //收 
map <string,int> kp; //送 
string a[20];
int main()
{
   
	cin>>n;
	for(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值