ZeroJudge A410: 解方程

題目敘述

每筆資料輸入有一6個整數,分別是a、b、c、d、e、f。

題目要求解出ax + by = c、dx + ey = f的解。輸出的小數點保留至第二位,輸出格式請見範例輸出。如果無解的話輸出"No answer",如果答案有無限多個的時候輸出"Too many"。

範例輸入

1 1 2 1 -1 0

範例輸出

x=1.00

y=1.00

解題思路

可是使用範例程式碼中的公式來解這個方程式。輸出的部分可以使用Stdio.h中的printf("%.2f)來只輸出小數點後兩位,詳情請見範例程式碼。

解題程式碼如下 (僅供參考):

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
  int a1, b1, c1, a2, b2, c2;
  scanf("%d%d%d%d%d%d", &a1, &b1, &c1, &a2, &b2, &c2);
  int deltax1,deltax2,delta;
  float x1, x2;
  deltax1=c1*b2-b1*c2;
  deltax2=a1*c2-c1*a2;
  delta=a1*b2-a2*b1;
  if(delta != 0)
  {
    x1=(float)deltax1/delta;
    x2=(float)deltax2/delta;
    printf("x=%.2f\n", x1);
    printf("y=%.2f\n", x2);
  }
  else
  {
    if(deltax1==0 && deltax2==0)
        cout<<"Too many"<<endl;
    else
        cout<<"No answer"<<endl;
  }
}

留言

這個網誌中的熱門文章

ZeroJudge M933: 邏輯電路

ZeroJudge A148: You Cannot Pass?!

ZeroJudge M932: 蜜蜂觀察