void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

题目就是给你n个人姓名,以及他们谁欠谁的钱,然你最后用最多n-1条规则(谁欠谁钱)罗列出欠钱的规则,要求钱还是平衡的

由于是special judge那么用最简单的想,把其他除第一个人以外的人的钱全部都算到第一个人头上,那么钱最后还是balance的

#include<stdio.h>
#include
<string.h>
int check(char *str)
{
int num=1;
for(int i=0;i<strlen(str);i++)
num
=num*(str[i]-'0');
return num%10000;
}
int main()
{
int n,t,r[10000],val,num1,num2,cas=0;
char a[50][20],b[20],c[20];
while(scanf("%d%d",&n,&t)!=EOF,n,t)
{
for(int i=1;i<=n;++i) scanf("%s",a[i]);
memset(r,
0,sizeof(r));
for(int i=1;i<=t;++i)
{scanf(
"%s%s%d",b,c,&val);
num1
=check(b);num2=check(c);
r[num1]
+=val;r[num2]-=val;}
printf(
"Case #%d\n",++cas);
for(int i=0;i<10000;++i)
{
if(r[i]>0) printf("%s %s %d\n",a[1],a[i],r[i]);
if(r[i]<0) printf("%s %s %d\n",a[i],a[1],0-r[i]);
}
printf(
"\n");
}
return 0;
}


posted on 2011-04-17 12:55  void-man  阅读(228)  评论(0)    收藏  举报