观察可以发现,如果是实数,那么 i 前面的系数一定是 0,或者不存在 i
因此我们,将所有的 +0i 和 -0i 替换成 "",然后判断每个子串是否包含 i 即可。
n = int(input())
nums = input().split()
res = 0
for num in nums:
num = num.replace("+0i", "").replace("-0i", "")
if 'i' not in num:
res += 1
print(res)
import java.util.*;
// 注意类名必须为Main
class Main {
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
// int b = sc.nextInt();
int res = 0;
for(int i=0;i<n;i++){
String s = sc.next();
int len = s.length();
if(s.charAt(len-1) != 'i'){
res++;
continue;
}
if(s.charAt(len-2) == '0' && (s.charAt(len-3) == '+' || s.charAt(len-3) == '-')){
res++;
}
}
System.out.println(res);
}
}
#include "iostream"
#include <string>
#include <regex>
#include <complex>
#include <vector>
using namespace std;
complex<double> pareComplex(const string &str) {
double real = 0, imag = 0;
int plus_pos = str.find('+', 1);
int minus_pos = str.find('-', 1);
int i_post = str.find('i');
if (plus_pos == -1 && minus_pos == -1) {
// -7 或者是 7i 这种类型
if (i_post != -1) {
// 表示存在
// 去掉 i
imag = stod(str.substr(0, i_post));
} else {
// 只有实部
real = stod(str);
}
} else {
// 表示既有实部又有虚部
if (plus_pos == -1 && minus_pos != -1) {
real = stod(str.substr(0, minus_pos));
string temp = str.substr(minus_pos, i_post - 1);
if (temp == "-") {
imag = -1;
} else if (temp == "+") {
imag = 1;
} else {
imag = stod(temp);
}
} else if (plus_pos != -1 && minus_pos == -1) {
real = stod(str.substr(0, plus_pos));
imag = stod(str.substr(plus_pos + 1));
}
}
// cout << real << " " << imag<< endl;
return complex<double>(real, imag);
}
int main() {
int n;
string temp;
cin >> n;
vector<complex<double>> vectorMy(n);
for (int i = 0; i < n; i++) {
cin >> temp;
// 分割
vectorMy[i] = pareComplex(temp);
}
int count = 0;
for(int i =0; i < n; i++){
complex<double> item = vectorMy[i];
if(item.imag() == 0){
count++;
}
}
cout << count << endl;
return 0;
}
小美拿到了一个由复数组成的数组,她想知道其中有多少个实数?
实数:有理数和无理数的总称。其中无理数是无限不循环小数,有理数包括整数和分数。
第一行输入一个正整数,代表数组的大小。
第二行输入n个复数,代表小美拿到的数组。
1≤n≤105
后台数据保证复数为a或者a+bi的形式,其中a和b为绝对值不超过109的整数。
一个整数,代表实数的数量。
输入
4
-5 5-i 6+3i -4+0i
输出
2