1. 恭喜發財 利是竇來成績: 10 / 折扣: 0.8
在中國,過春節時人們有給孩子壓歲錢(粵語稱為利是)的習俗。
最早的壓歲錢出現於漢代,又叫壓勝錢,並不在市面上流通,而是鑄成錢幣形式的玩賞物,有避邪的功能。錢幣正面一般鑄有“萬歲千秋”、“去殃除凶”等吉祥話和龍鳳、龜蛇、雙魚等吉祥圖案。
據說嘉興府有一戶姓管的人家,夫妻老年得子,十分珍愛。在年三十晚上,為防止“祟”來侵擾一直逗孩子玩,小孩用紅紙包了八枚銅錢,包了又拆,拆了又包,睡下以後,包著的八枚銅錢就放在枕邊。半夜裡,一陣陰風吹過,黑矮的小人正要用他的白手摸孩子的頭,突然孩子枕邊迸出一道金光,祟尖叫著逃跑了。
於是這件事傳揚開來,大家紛紛效仿,在大年夜用紅紙包上錢給孩子,祟就不敢再來侵擾了。因而人們把這種錢叫“壓祟錢”,“祟”與“歲”發音相同,日久天長,就被稱為 “壓歲錢”了。
現在有 N 個人,他們都有小孩,春節來了,他們要發壓歲錢給朋友的小孩,而他們自己的小孩也會收到壓歲錢。為了簡單,他們在發壓歲錢的時候,使用以下的計算方法,譬如某甲有 100 塊,它要給另外三個人的小孩發壓歲錢,則每個小孩會分到 100/3 = 33 塊,剩餘的 1 塊就不發了。
給你這 N 個人的資訊,以及他們把壓歲錢發給了誰的小孩,請你計算他們每個人的小孩收到的壓歲錢和他們發出去的壓歲錢的差額是多少。
輸入
| 第 1 行: |
一個整數 N(2 <= N <= 10) |
| 第 2..N+1 行: |
每行是一個人名,每個名字不超過 14 個字元 |
| 第 N+2..結束: |
N 組按照以下規則群組織的資料:
| 組中的第一行為送出壓歲錢的人名。 |
| 第二行包括兩個數字,第一個是該人有多少錢(0~2000),第二個是它要把錢發給幾個人的小孩,用 NGi 表示(0 ≤ NGi ≤ N-1). |
| 如果 NGi 為非零,則下面的 NGi 行會列出接受壓歲錢的人的名字。 |
|
輸入範例
5davelauraowenvickamrdave200 3lauraowenvickowen500 1daveamr150 2vickowenlaura0 2amrvickvick0 0
輸出格式
輸出為 N 行,每行上是一個人名與它收到和送出的壓歲錢之差額,這兩項之間有一個空格。這 N 行的順序應該和輸入中第 2~N+1 行的順序相同。
輸出範例
dave 302laura 66owen -359vick 141amr -150
#include<iostream>#include<cstring>using namespace std;char name[10][20];int money[10];int n; int getNameNum(char *s){ int i; for(i=0;i<n;i++) if(!strcmp(name[i],s)) return i; return -1; //cannot find the name} int main(){ //freopen("in.txt","r",stdin); scanf("%d\n",&n); int i,j; for(i=0;i<n;i++) { gets(name[i]); money[i]=0; } int childNum,o_money; char tmp[20],giver[20]; for(i=0;i<n;i++) { gets(giver); scanf("%d%d\n",&o_money,&childNum); money[getNameNum(giver)]-=o_money; if(childNum==0) { continue; money[getNameNum(giver)]+=o_money; } money[getNameNum(giver)]+=o_money%childNum; for(j=0;j<childNum;j++) { gets(tmp); money[getNameNum(tmp)]+=o_money/childNum; } } for(i=0;i<n;i++) printf("%s %d\n",name[i],money[i]); return 0;}