BestCoder Round #72 Clarke and chemistry

来源:互联网 发布:秦可卿怎么死的知乎 编辑:程序博客网 时间:2024/05/22 08:18

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5625

题意嗯简单,就是一个很基础的化学方程式配平,小编高中的时候可是学化学竞赛的……这个题还会难倒小编吗……比赛的时候小编正是这样想的……于是开始进行元素守恒和电子守恒的运用,花了35分钟才把这第一题A掉……然而小编的代码虽然A了,但是却没有过终端……(TT),看着那些几分钟A掉又过了终端的人很是纳闷,难倒这些人的化学学的比我还多?结果一看题解……小编我一口老血喷出来……由于题目数据最多到100,只需要暴力模拟一下, 把每种情况都考虑一次就可以了……

#include <cstdio>#include <cstring>using namespace std;int zi[3][26],num[3];bool check(int n1,int n2){for(int i=0; i<26; i++)if(n1*zi[0][i]+n2*zi[1][i] != zi[2][i])return false;return true;}int main(){int T;scanf("%d",&T);while(T--){memset(zi,0,sizeof(zi));memset(num,0,sizeof(num));int num[3],b;char a;for(int i=0; i<3; i++) scanf("%d",&num[i]);for(int i=0; i<3; i++){for(int j=0; j<num[i]; j++){getchar();scanf("%c%d",&a,&b);zi[i][a-'A'] = b;}}int flag = 0,ans1,ans2;for(int i=1; i<=100; i++){for(int j=1; j<=100; j++){if(check(i,j)){flag = 1;ans1 = i;ans2 = j;break;}}if(flag) break;}if(flag) printf("%d %d\n",ans1,ans2);else printf("NO\n");}return 0;}


0 0