题意:计算每个friend交换钱后,每一位剩余的钱;
思路;字符串数组,注意输入,注意初始化,对应遍历,直接加减,均分,模。注意读懂题。
/*
TASK:gift1
LANG:C++
ID:huibaochen
*/
#include <iostream>
#include <stdio.h>
#include <string.h>
const int maxn = 15;
const int minn = 20;
using namespace std;
int main()
{
freopen ("gift1.in", "r", stdin);
freopen ("gift1.out", "w", stdout);
int t, m, n, div, mod;
char name[maxn][minn], name1[maxn][minn];
int name2[maxn];
while (scanf("%d", &t) != EOF){
memset (name, 0, sizeof(name));
memset (name2, 0, sizeof(name2));
for (int i = 0; i < t; i++){
scanf("%s", name[i]);
}
for (int i = 0; i < t; i++){
memset (name1, 0, sizeof(name1));
mod = div = 0;
scanf ("%s", name1[0]);
scanf ("%d%d", &m, &n);
if ((m == 0) && (n == 0))
continue;
else{
if(n != 0){
div = m / n;
mod = m % n;
for (int j = 1; j <= n; j++)
scanf("%s", name1[j]);
for (int j = 1; j <= n; j++){
for (int k = 0; k < t; k++){
if ((strcmp(name1[j], name[k])) == 0)
name2[k] = name2[k] + div;
}
}
for (int j = 0; j < t; j++){
if((strcmp(name[j], name1[0])) == 0)
name2[j] = name2[j] - m + mod;
}
}
}
}
for (int i = 0; i < t; i++){
printf("%s %d\n", name[i], name2[i]);
}
}
return 0;
}