首页 > 代码库 > USACAO gift1

USACAO gift1

背景:模拟,结构体,strcmp()。

学习:1.最大的易错点是,除数为0的情况,开始没有考虑,调了才发现。

/*
ID:jibancan1
LANG:C++
TASK:gift1
*/
#include<stdio.h>
#include<string.h>
  struct child{
    	char str[15];
	    int x;                          //输出与接收的差值。 
  }p[10];
int main(void){
	freopen("gift1.in","r",stdin);
	freopen("gift1.out","w",stdout);
	int np;
	scanf("%d",&np);
	for(int i=0;i<np;i++)
	    scanf("%s",p[i].str);
	char key[15];                        //暂时存放读入的字符串。    
	for(int j=0;j<np;j++){
		scanf("%s",key);
		int k=0;                      //找出当前读入名字是哪个? 
		for(;k<np;k++)
		    if(strcmp(key,p[k].str)==0) break;
		int money,ng;                 //初始的钱和要给的人数。 
		scanf("%d %d",&money,&ng);    
		if(ng!=0) p[k].x-=money-money%ng;
		for(int ii=0;ii<ng;ii++){     //把钱分给ng个人。
			scanf("%s",key);
			for(k=0;k<np;k++)
				if(strcmp(key,p[k].str)==0)  break;
			if(ng!=0)	p[k].x+=money/ng;	
		}    
	}
	for(int jj=0;jj<np;jj++)
		printf("%s %d\n",p[jj].str,p[jj].x);
	return 0;   
}



USACAO gift1