如你所知,中国素来有发红包的习俗。 新年要到了,小明想要知道朋友圈里每个人的收益。 每个人有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
代码如下:
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();
}
}