题目:
At a certain laboratory results of secret research are thoroughly encrypted. A result of a single experiment is stored as an information of its completion:
`positive result', `negative result', `experiment failed' or `experiment not completed'
The encrypted result constitutes a string of digits S, which may take one of the following forms:
positive result S = 1 or S = 4 or S = 78 negative result S = S35
experiment failed S = 9S4 experiment not completed S = 190S
(A sample result S35 means that if we add digits 35 from the right hand side to a digit sequence then we shall get the digit sequence corresponding to a failed experiment)
You are to write a program which decrypts given sequences of digits.
input
A integer n stating the number of encrypted results and then consecutive n lines, each containing a sequence of digits given as ASCII strings.
output
For each analysed sequence of digits the following lines should be sent to output (in separate lines):
+ for a positive result - for a negative result * for a failed experiment ? for a not completed experiment
In case the analysed string does not determine the experiment result, a first match from the above list should be outputted.
sample input
4
78
7835
19078
944
sample output
+
-
?
*
题解:找到最直接找到的情况就输出对应的符号。
#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
using namespace std;
int main() {
int t;
string in;
scanf("%d", &t);
getchar();
for (int j = 0; j < t; j++) {
getline(cin, in);
int i = in.size();
if (in == "1" || in == "4" || in == "78") {
printf("+\n");
continue;
}
if (in[i - 1] == '5' || in[i - 2] == '3') {
printf("-\n");
continue;
}
if (in[0] == '1' || in[1] == '9' || in[2] == '0') {
printf("?\n");
continue;
}
if (in[0] == '9' || in[i - 1] == '4') {
printf("*\n");
continue;
}
}
return 0;
}