# Input/Output# String Manipulation

j568 - 無預警小考 ( 上 )

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀取多組測試案例,每組案例包含若干個一元二次方程式的係數,並按照指定格式輸出這些方程式。輸出時需要注意係數的顯示方式,例如省略係數為 1 的 x^2,以及處理正負號。

解題思路

程式的主要邏輯是讀取測試案例的數量 t,然後對於每個案例,讀取方程式的數量 n。接著,對於每個方程式,讀取三個係數 abc,並按照題目要求的格式輸出方程式。程式使用 cin 讀取輸入,cout 輸出結果。特別注意處理係數為 0、1、-1 以及正負號的情況,以符合題目要求的輸出格式。

複雜度分析

  • 時間複雜度: O(t * n)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
long long n,t,a,b,c;
int main(){
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> t;
	for(int ca=1;ca<=t;++ca){
		cin >> n;
		cout << "請使用配方法解下列一元二次方程式\n";
		for(int i=1;i<=n;++i){
			cout << "\n" << i << ". ";
			cin >> a >> b >> c;
			if(a==1){
				cout << "x^2";
			}
			else if(a==-1){
				cout << "-x^2";
			}
			else{
				cout << a << "x^2"; 
			}
			if(b==0){
				
			}
			else if(b==-1){
				cout << "-x";
			}
			else if(b<0){
				cout << b << "x";
			}
			else if(b==1){
				cout << "+x";
			}
			else{
				cout << "+" << b << "x";
			}
			if(c==0){
				
			}
			else if(c<0){
				cout << c ;
			}
			else{
				cout << "+" << c ;
			}
			cout << "=0\n";
		}
		cout << "\n考試要加油口屋\n";
	}
}

Discussion