前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >红包的收益(人人网2017春招真题)

红包的收益(人人网2017春招真题)

作者头像
AI那点小事
发布2020-04-20 16:20:12
3390
发布2020-04-20 16:20:12
举报
文章被收录于专栏:AI那点小事AI那点小事

如你所知,中国素来有发红包的习俗。 新年要到了,小明想要知道朋友圈里每个人的收益。 每个人有mi数量的钱用来发红包,并且这笔钱会平均地发给ki个人(收益得到的钱不再发红包)。 而且发给每个人的钱都是整数。如果不能整除,发红包的人保留mi mod ki的钱。

输入 第1行,一个整数n,2<=n<=10,小明的n个朋友。 第 2到n+1行每行一个字符串,第i+1行表示第i个人的名字。 接下来n段: 每段第一行是一个字符串,表示发红包的人的名字。 第二行为两个数mi,ki。含义如上。 接下来ki行,每行一个字符串表示被发红包的人的名字。

样例输入 5 dave laura owen vick amr dave 200 3 laura owen vick owen 500 1 dave amr 150 2 vick owen laura 0 2 amr vick vick 0 0

输出 n行,每行一个字符串和一个整数,分别表示第i个人的名字和收益。

样例输出 dave 302 laura 66 owen -359 vick 141 amr -150

时间限制 C/C++语言:1000MS 其他语言:3000MS 内存限制 C/C++语言:65536KB 其他语言:589824KB


代码如下:

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

class Friend{
    private String name;
    private int sum;
    private int receive;
    private int cnt;

    public void Set(int sum, int cnt) {
        this.sum = sum;
        this.cnt = cnt;
    }

    public Friend(String name){
        this.name = name;
        this.sum = 0;
        this.receive = 0;
    }

    public void Receive(int num){
        this.receive += num;
    }

    public void Print(){
        System.out.println(this.name+" "+this.receive);
    }

    public String getName() {
        return name;
    }

    public int getSum() {
        return sum;
    }

    public int getReceive() {
        return receive;
    }

    public void setReceive(int receive) {
        this.receive = receive;
    }

    public void Send(Friend friend){
        friend.Receive(this.sum/this.cnt);
    }
}

public class Main {
    static int N;
    static ArrayList<Friend> friends_set = new ArrayList<>();
    static HashMap<String,Friend> friends_map= new HashMap<>();

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        N = in.nextInt();
        for ( int i = 0 ; i < N ; i++){
            String name = in.next();
            Friend tmp = new Friend(name);
            friends_set.add(tmp);
            friends_map.put(name, tmp);
        }

        for ( int i = 0 ; i < N ; i++){
            String name = in.next();
            int sum = in.nextInt();
            int cnt = in.nextInt();
            Friend sender = friends_map.get(name);
            sender.Set(sum,cnt);
            if ( cnt == 0 && sum == 0){
                continue;
            }else{
                for ( int k = 0 ; k < cnt ; k++){
                    String receiver_name = in.next();
                    Friend receiver = friends_map.get(receiver_name);
                    sender.Send(receiver);
                }
                int send_receive = sender.getReceive();
                sender.setReceive(send_receive-sum+sum%cnt);
            }
        }

        for ( int i = 0 ; i < friends_set.size() ; i++){
            friends_set.get(i).Print();
        }

        in.close();
    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档