栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1912 Equations

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1912 Equations

#include <iostream>#include <sstream>#include <string.h>using namespace std;void getcb(int& c11, int& c12, int& c21, int& c22, int& b1, int& b2){ c11 = c12 = c22 = c21 = b1 = b2 = 0; int num, i; char str[800]; string word; istringstream strs; bool sub = false, eq = false; cin.getline(str, 800); cin.getline(str, 800); strs.str(str); while(!strs.eof()) {  strs>>word;  switch(word[word.size() - 1])  {  case 'x':   num = 0;   if(word.size() == 1)    num = 1;   else if(word.size() == 2 && word[0] == '-')    num = -1;   else if(word[0] == '-')   {    for (i=1; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }    num = -num;   }   else   {    for (i=0; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }   }   if(sub)    num = -num;   if(eq)    num = -num;   sub = false;   c11 += num;   break;  case 'y':   num = 0;   if(word.size() == 1)    num = 1;   else if(word.size() == 2 && word[0] == '-')    num = -1;   else if(word[0] == '-')   {    for (i=1; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }    num = -num;   }   else   {    for (i=0; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }   }   if(sub)    num = -num;   if(eq)    num = -num;   sub = false;   c12 += num;   break;  case '-':   sub = true;   break;  case '=':   eq = true;   break;  case '+':   break;  default:   num = 0;   if(word[0] == '-')   {    for (i = 1; i<word.size(); ++i)    {     num = num * 10 + word[i] - 48;       }    num = -num;   }   else   {    for (i = 0; i<word.size(); ++i)    {     num = num * 10 + word[i] - 48;       }   }   if(sub)    num = -num;   if(!eq)    num = -num;   sub = false;   b1 += num;  } } eq = false; sub = false; strs.clear(); cin.getline(str, 800); strs.str(str);  while (!strs.eof()) {  strs>>word;  switch(word[word.size() - 1])  {  case 'x':   num = 0;   if(word.size() == 1)    num = 1;   else if(word.size() == 2 && word[0] == '-')    num = -1;   else if(word[0] == '-')   {    for (i=1; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }    num = -num;   }   else   {    for (i=0; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }   }   if(sub)    num = -num;   if(eq)    num = -num;   sub = false;   c21 += num;   break;  case 'y':   num = 0;   if(word.size() == 1)    num = 1;   else if(word.size() == 2 && word[0] == '-')    num = -1;   else if(word[0] == '-')   {    for (i=1; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }    num = -num;   }   else   {    for (i=0; i<word.size() - 1; i++)    {     num = num * 10 + word[i] - 48;    }   }   if(sub)    num = -num;   if(eq)    num = -num;   sub = false;   c22 += num;   break;  case '-':   sub = true;   break;  case '=':   eq = true;  case '+':   break;  default:   num = 0;   if(word[0] == '-')   {    for (i = 1; i<word.size(); ++i)    {     num = num * 10 + word[i] - 48;       }    num = -num;   }   else   {    for (i = 0; i<word.size(); ++i)    {     num = num * 10 + word[i] - 48;       }   }   if(sub)    num = -num;   if(!eq)    num = -num;   sub = false;   b2 += num;  } } }int gcd(int a, int b){ int r, t; if(a < b) {  t = a; a = b; b = t; } r = a % b; while (r != 0) {  a = b;  b = r;  r = a % b; } return b;}void print(int a, int b){ int g; if(a == 0)  cout<<0<<endl; else {  if(a < 0 && b > 0)  {   a = - a;   cout<<"-";  }  else if (a > 0 && b < 0)  {   b = -b;   cout<<"-";  }  if(a % b == 0)   cout<<a/b<<endl;  else  {   g = gcd(a, b);   cout<<a/g<<"/"<<b/g<<endl;  } }}int main(){ int n; int c11, c12, c21, c22, b1, b2; cin>>n; for(int t = 0; t<n; ++t) {  if(t != 0)   cout<<endl;  getcb(c11, c12, c21, c22, b1, b2);  if (c11 == 0)  {   if (c12 == 0)   {    if(b1 != 0)    {     cout<<"don't know"<<endl<<"don't know"<<endl;    }    else if (c21 == 0 && c22 != 0)    {     cout<<"don't know"<<endl;     print(b2, c22);    }    else if (c22 == 0)    {     print(b2, c21);     cout<<"don't know"<<endl;    }    else    {     cout<<"don't know"<<endl<<"don't know"<<endl;    }   }   else if(c11 * c22 - c12 * c21 == 0)   {    if(c22 != 0 && (b1/c12 != b2/c22) || c21 == 0 && c22 == 0 && b2 != 0)     cout<<"don't know"<<endl<<"don't know"<<endl;    else    {     cout<<"don't know"<<endl;     print(b1, c12);    }   }   else   {    print(c12*b2 - c22 * b1,c21 * c12);    print(b1, c12);   }  }  else if (c12 == 0)  {   if (c11 * c22 - c12 * c21 == 0)   {    if(c21 != 0 && (b1/c11 != b2/c21) ||  c21 == 0 && c22 == 0 && b2 != 0)     cout<<"don't know"<<endl<<"don't know"<<endl;    else    {     print(b1, c11);     cout<<"don't know"<<endl;    }   }   else   {    print(b1, c11);    print(c11*b2 - c21*b1, c22*c11);   }  }  else if (c21 == 0)  {   if (c22 == 0)   {    cout<<"don't know"<<endl<<"don't know"<<endl;   }   else if (c11 * c22 - c12 * c21 == 0)   {    cout<<"don't know"<<endl;    print(b2, c22);   }   else   {    print(c22*b1 - c12*b2, c11*c22);    print(b2, c22);   }  }  else if (c22 == 0)  {   if (c11 * c22 - c12 * c21 == 0)   {    print(b2, c21);    cout<<"don't know"<<endl;   }   else   {    print(b2, c21);    print(c21*b1 - b2*c11, c12*c21);   }  }  else if (c11 * c22 - c12 * c21 == 0)  {   cout<<"don't know"<<endl<<"don't know"<<endl;  }  else  {   print(b1*c22 - b2*c12, c11*c22 - c21*c12);   print(c21*b1 - c11*b2, c21*c12 - c11*c22);  } } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号