PAT Basic 1069. 微博转发抽奖(20)

小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包。请你编写程序帮助他确定中奖名单。

输入格式:

输入第一行给出三个正整数M(<= 1000)、N和S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从1开始)。随后M行,顺序给出转发微博的网友的昵称(不超过20个字符、不包含空格回车的非空字符串)。

注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。

输出格式:

按照输入的顺序输出中奖名单,每个昵称占一行。如果没有人中奖,则输出“Keep going...”。

输入样例1:
9 3 2
Imgonnawin!
PickMe
PickMeMeMeee
LookHere
Imgonnawin!
TryAgainAgain
TryAgainAgain
Imgonnawin!
TryAgainAgain
输出样例1:
PickMe
Imgonnawin!
TryAgainAgain
输入样例2:
2 3 5
Imgonnawin!
PickMe
输出样例2:
Keep going...

思路:
边输出边输出,而不是全都读取完再做一次for循环。坑点在于%符号,-4%2结果为0,要避免负数对s取余。

放码过来:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <vector>
#include <cmath>
#include <set>
#include <iomanip>
#include <sstream>
#include <unordered_map>

using namespace std;

int main() {
    //freopen("D:/work/hello-cpp/pat_basic/in.txt", "r", stdin);

    int m, n, s;
    cin >> m >> n >> s;
    unordered_map<string, int> mp;
    bool printed = false;
    int uid = 1;
    for (int i = 0; i < m; i++) {
        string name;
        cin >> name;
        if (uid>=s && (uid-s)%n==0) {
            if (mp[name]==0) {
                cout << name << endl;
                mp[name] = 1;
                printed = true;
                uid++;
            }
        }
        else {
            uid++;
        }
    }
    if (!printed) {
        cout << "Keep going..." << endl;
    }

    //fclose(stdin);

    return 0;
}

/*
这题我遇到的坑在于,%这个操作符有坑。
网上搜到的做法往往是,读取所有输入后再处理,也就是2个for循环。
实际上边输出边输出就可以的。
但是需要注意,如果序号不足S,此时计算%可能出错:
uid-s=-4, n=2, 则-4%2==0
*/
时间: 2024-10-07 09:05:56

PAT Basic 1069. 微博转发抽奖(20)的相关文章

李宇春代言凡客12小时微博转发过20万

[亿邦动力网讯]10月11日消息,亿邦动力网独家获知,凡客诚品(微博)宣布签约娱乐明星李宇春(微博)为品牌形象代言人之后,此消息在新浪微博上12小时转发量超过20万,再次冲到新浪微博当日转发第一名. 李宇春代言凡客诚品广告海报 据凡客方面介绍,截止10月10日晚上7点,该微博8小时转发量已超过16万,12小时微博转发量超过20万,评论超万条,而此次转发超80%来自普通草根账号. 据了解,作为平民偶像的李宇春此次代言以"人民时尚"为品牌理念的凡客诚品颇具象征意义,同时李宇春带来的明星效益

最高法界定网络侵权:微博转发署名与否存争议

中介交易 SEO诊断 淘宝客 云主机 技术大厅 今后,网络服务提供者提供信息存储空间.搜索.链接等服务时,教唆或者帮助用户实施侵犯他人信息网络传播权行为的,可能将承担连带责任. 近日,最高人民法院全文公布了<关于审理侵犯信息网络传播权民事纠纷案件适用法律若干问题的规定(征求意见稿)>,向社会征求意见.意见稿对网络用户.网络服务提供者侵犯著作权行为,以及侵权认定情形做出规定. 网站拟连带担责 据南方日报记者了解到,本次征求意见稿共20条,规定人民法院审理侵犯信息网络传播权民事纠纷案件,在行使裁量

98万微博转发 政协委员向伊伊捐百万

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 "向温州市特警支队长邵曳戎致敬!是他反对'把车厢吊起放到地上清理',他的理由是:'万一里面有生命呢?你怎么交代?!'他坚持在原地清理,才有了小伊伊的得救.呼吁支持为邵曳戎记功!本人承诺:凡本微博被转发一次,就捐献一元给小伊伊!" 7月26日,珠海市政协委员陈利浩(微博)发出这条微博,定下24小时时限.100万元上限.至昨日

《iOS网络编程与云端应用最佳实践》微博转发送书了

<iOS网络编程与云端应用最佳实践>微博转发送书了! 新浪微博地址:http://weibo.com/2078101705/zy15U4a5D,转发本条微博即有机会获得<iOS网络编程与云端应用最佳实践>图书一本. 当当预售   亚马逊预售 现拿到出版社样书,应广大粉丝建议,搞一个微博转发送书,随机抽取转发粉丝送书3本. 截止5月30日晚6点. 在30日晚8点,会在多贝公开课<苹果电子商务探讨-iOS6 Passbook解析与开发>现场抽取中奖粉丝,公开课免费的,欢迎大

微博转发关系问题

问题描述 请教大家一个问题:假设有ABCD四人,A发了一条微博,B转了A的,C转了B的,D转了C的.那么在A的所有转发中有BCD三人,在B的转发中有CD两人,在C的转发中有D一人,在D的转发中没有人,现在我如何获取正确的转发顺序 解决方案 解决方案二:"在A的所有转发中有BCD三人,在B的转发中有CD两人,在C的转发中有D一人,在D的转发中没有人"貌似不能反推到"A发了一条微博,B转了A的,C转了B的,D转了C的"这句话吧?解决方案三:时间排序不能搞定吗解决方案四:

[干货分享]微博转发营销实战数据分享(多图)

昨日http://www.aliyun.com/zixun/aggregation/20097.html">百度指数公开版上线,在腾讯和新浪微博发布信息后,靠兄弟们转发推广,其中包括人气10万的linkhelper站长草上飞. 截止到现在,我的微博全部转播和评论共73次,下面看看带来多少访问量,见下图: 上图所示,一共有484个IP访问百度指数公开版,其中:58.68% 直接输入网址38.84% 微博引荐2.48% 搜索引擎前2项完全由微博推广所获得的访问量. 主动输入网址访问:284次腾

微博发布“抽奖”信息 众多网友被骗快递费

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 商家在微博上发起抽奖以提高关注度,这早已不是新鲜事.然而近日,却有人以此为幌子,进行诈骗. 比如:一个名为"@香港数码代购"的微博最近发布抽奖信息称,参与者将有机会获得iPhone .iPad等奖品.抽奖时,该微博称,抽奖系统出现问题,转用微信进行抽奖,要求中奖者支付邮费. 义乌警方提醒:天上不会掉馅饼,这是一种利用&qu

微博转发一次车价就减1元

汽车也做"围脖"营销 文/记者钟宏连.谢英君 图/记者石忠情 记者了解发现,自从微博兴起后,汽车销售商家也利用微博做起了微博营销.近日,东莞的多家汽车商家就利用自己的微博吸引了众多的车主参与他们的微博上发起的促销活动. 汽车商家也微博 记者在网上搜索到,不少车商都推出了微博营销的活动,如东莞的星高达之家就推出了成为粉丝转发微博可获原厂限量版斯柯达环保化妆包的活动.一汽马自达的商家也发起了转发活动,只要想买这款车的车主转发一次,车价就减1元,转发到179800次以上,免费送出睿翼精英版1

新浪微博如何查看微博转发记录?

  微博可查看转发记录: 1.点击进入转发之后,点击转发框下方"展开"按钮; 2.进入想要查看转发记录的单条微博,点击微博下的"转发"按钮; 3.二次转发的微博,还可查看原微博的转发记录.