天天看點

uva 621(數學)

題目:

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:

uva 621(數學)
positive result S = 1 or S = 4 or S = 78
uva 621(數學)
negative result S = S35
uva 621(數學)
experiment failed S = 9S4
uva 621(數學)
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;
}