输入两个表示复数的字符串,输出它们相乘的结果的字符串
复数字符串用a+bi表示(a, b 为整数, i为虚数单位,i2=1)
两个表示复数的字符串
两个数相乘的结果的字符串
1+2i 2+1
0+5i
(1+2i)(2+i) = (2 + i + 4i + 2i * i) = 0 + 5i
1+-2i 3+4i
11+-2i
(1+-2i)(3+4i) = (3 + 4i - 6i - 8i * i) = 11+-2i
/**
*/
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
const maxLine = 2;
let input = [];
function parse(str) {
const arr = str.split('+');
const a = parseInt(arr[0]);
let b;
if (arr[1] === '1') {
b = 1;
} else {
b = parseInt(arr[1].slice(0, -1));
}
return {a, b}
}
function solution(input) {
const num1 = parse(input[0]);
const num2 = parse(input[1]);
return `${num1.a * num2.a - num1.b * num2.b}+${num1.b*num2.a + num1.a*num2.b}i`
}
rl.on('line', (line) => {
input.push(line);
if (input.length === maxLine) {
console.log(solution(input));
rl.close();
}
})
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
ouput: process.stdout
})
let inArr = []
rl.on('line',line=>{
if(!line) return
inArr.push(line.trim())
if(inArr.length === 2){
let a = inArr[0].split('+').map(e=>parseInt(e))
let b = inArr[1].split('+').map(e=>parseInt(e))
let res = a[0]*b[0] - a[1]*b[1] +'+'+((a[0]*b[1]+a[1]*b[0])+'i')
console.log(res)
}
}) #include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct
{
int a;
int b;
}complex;
complex cmp_mul(complex cmp1,complex cmp2)
{
complex tmp;
tmp.a = cmp1.a * cmp2.a - cmp1.b * cmp2.b;
tmp.b = cmp1.a * cmp2.b + cmp1.b * cmp2.a;
return tmp;
}
int main()
{
complex cmp1,cmp2,cmp3;
scanf("%d+%di",&cmp1.a,&cmp1.b);
scanf("%d+%di",&cmp2.a,&cmp2.b);
cmp3 = cmp_mul(cmp1,cmp2);
printf("%d+%di\n",cmp3.a,cmp3.b);
return 0;
} #include <iostream>
#include <string>
using namespace std;
int str2int(string& str){
int flag = 1;
int num = 0;
for (int i = 0; i < str.size(); ++i){
if (str[i] == '-')
flag = -1;
else if ('0' <= str[i] && str[i] <= '9')
num = num * 10 + (str[i] - '0');
}
return flag * num;
}
int main(){
string str1, str2;
cin >> str1 >> str2;
string str1_first = str1.substr(0, str1.find('+'));
string str2_first = str2.substr(0, str2.find('+'));
string str1_second = str1.substr(str1.find('+') + 1);
string str2_second = str2.substr(str2.find('+') + 1);
int num1_first = str2int(str1_first);
int num1_second = str2int(str1_second);
int num2_first = str2int(str2_first);
int num2_second = str2int(str2_second);
int result_first = num1_first * num2_first - num1_second * num2_second;
int result_second = num1_first * num2_second + num1_second * num2_first;
cout << result_first << "+" << result_second << "i" << endl;
return 0;
}
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
text1 := scanner.Text()
num1 := strings.Split(text1, "+")
scanner.Scan()
text2 := scanner.Text()
num2 := strings.Split(text2, "+")
a0, _ := strconv.Atoi(num1
[0]) //strconv.ParseInt(num1
[0], 10, 32)
b0, _ := strconv.Atoi(num2
[0]) //strconv.ParseInt(num2
[0], 10, 32)
a1, _ := strconv.Atoi(strings.Replace(num1
[1], "i", "", 1))
b1, _ := strconv.Atoi(strings.Replace(num2
[1], "i", "", 1))
realVal := a0*b0 - a1*b1
imgVal := a0*b1 + a1*b0
var rtStr string = strconv.Itoa(realVal) + "+" + strconv.Itoa(imgVal) + "i" //// strconv.Itoa
fmt.Print(rtStr)
} Golangimport java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String num1;
while((num1 = br.readLine()) != null){
String[] strArr1 = num1.split("\\+");
// 构造一个数组存储第一个复数实部与虚部
int[] arr1 = new int[2];
arr1[0] = Integer.parseInt(strArr1[0]);
if(strArr1[1].equals("i")){
arr1[1] = 1;
}else if(strArr1[1].equals("-i")){
arr1[1] = -1;
}else{
int len = strArr1[1].length();
arr1[1] = Integer.parseInt(strArr1[1].substring(0, len - 1));
}
String[] strArr2 = br.readLine().trim().split("\\+");
// 构造一个数组存储第二个复数实部与虚部
int[] arr2 = new int[2];
arr2[0] = Integer.parseInt(strArr2[0]);
if(strArr2[1].equals("i")){
arr2[1] = 1;
}else if(strArr2[1].equals("-i")){
arr2[1] = -1;
}else{
// 其实第一个if不合理,这么做只是因为有一个测试用例有问题,面向测试编程
if(strArr2[1].equals("1")){
arr2[1] = 1;
}else{
int len = strArr2[1].length();
arr2[1] = Integer.parseInt(strArr2[1].substring(0, len - 1));
}
}
// 分别计算实部和虚部
int real = 0, complex = 0;
real += arr1[0] * arr2[0];
real += -(arr1[1] * arr2[1]);
complex += ((arr1[0] * arr2[1]) + (arr1[1] * arr2[0]));
// 打印结果
System.out.println(String.valueOf(real) + "+" + String.valueOf(complex) + "i");
}
}
} import java.util.*;
import java.lang.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1= sc.nextLine();
String s2=sc.nextLine();
String[] sps1=s1.split("\\+");
String[] sps2=s2.split("\\+");
String[] b=sps1[1].split("i");
String[] d=sps2[1].split("i");
int sum1=0;
int sum2=0;
int n=b.length;
int m=d.length;
/*if(n!=0&&m!=0) {
String[] b=sps1[1].split("i");
String[] d=sps2[1].split("i");
sum1=Integer.parseInt(sps1[0])*Integer.parseInt(sps2[0])-Integer.parseInt(b[0])*Integer.parseInt(d[0]);
sum2=Integer.parseInt(sps1[0])*Integer.parseInt(d[0])+Integer.parseInt(sps2[0])*Integer.parseInt(b[0]);
}else if(n==0&&m!=0){
String[] d=sps2[1].split("i");
sum1=Integer.parseInt(sps1[0])*Integer.parseInt(sps2[0])-Integer.parseInt(d[0]);
sum2=Integer.parseInt(sps1[0])*Integer.parseInt(d[0])+Integer.parseInt(sps2[0]);
}else if(!= 0&&sps2.length==0){
String[] b=sps1[1].split("i");
sum1=Integer.parseInt(sps1[0])*Integer.parseInt(sps2[0])-Integer.parseInt(b[0]);
sum2=Integer.parseInt(sps1[0])+Integer.parseInt(sps2[0])*Integer.parseInt(b[0]);
}else if(n==0&&sps2.length==0){
sum1=Integer.parseInt(sps1[0])*Integer.parseInt(sps2[0]);
sum2=Integer.parseInt(sps1[0])+Integer.parseInt(sps2[0]);
}*/
if(n==0){
if(m==0){
sum1=Integer.parseInt(sps1[0])*Integer.parseInt(sps2[0]);
sum2=Integer.parseInt(sps1[0])+Integer.parseInt(sps2[0]);}
else{
//String[] d=sps2[1].split("i");
sum1=Integer.parseInt(sps1[0])*Integer.parseInt(sps2[0])-Integer.parseInt(d[0]);
sum2=Integer.parseInt(sps1[0])*Integer.parseInt(d[0])+Integer.parseInt(sps2[0]);
}
}else {
if(m==0){
sum1=Integer.parseInt(sps1[0])*Integer.parseInt(sps2[0])-Integer.parseInt(b[0]);
sum2=Integer.parseInt(sps1[0])+Integer.parseInt(sps2[0])*Integer.parseInt(b[0]);
}else {
sum1 = Integer.parseInt(sps1[0]) * Integer.parseInt(sps2[0]) - Integer.parseInt(b[0]) * Integer.parseInt(d[0]);
sum2 = Integer.parseInt(sps1[0]) * Integer.parseInt(d[0]) + Integer.parseInt(sps2[0]) * Integer.parseInt(b[0]);
}
}
String str = sum1 + "+" + sum2 + "i";
System.out.println(str);
}
} var line1 = readline().split('+');
var a = parseInt(line1[0]);
var str = line1[1].split('i');
var b = parseInt(str[0]);
var line2 = readline().split('+');
var c = parseInt(line2[0]);
str = line2[1].split('i');
var d = parseInt(str[0]);
var i = a*c - b*d;
var j = a*d + b*c;
console.log(i+'+'+j+'i');