CF1155E.Guess the Root

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Jury picked a polynomial f(x)=a0+a1x+a2x2++akxkf(x) = a_0 + a_1 \cdot x + a_2 \cdot x^2 + \dots + a_k \cdot x^k . k10k \le 10 and all aia_i are integer numbers and 0ai<106+30 \le a_i < 10^6 + 3 . It's guaranteed that there is at least one ii such that ai>0a_i > 0 .

Now jury wants you to find such an integer x0x_0 that f(x0)0mod(106+3)f(x_0) \equiv 0 \mod (10^6 + 3) or report that there is not such x0x_0 .

You can ask no more than 5050 queries: you ask value xqx_q and jury tells you value f(xq)mod(106+3)f(x_q) \mod (10^6 + 3) .

Note that printing the answer doesn't count as a query.

输入格式

输出格式

To ask a question, print "? xqx_q " (0xq<106+3)(0 \le x_q < 10^6 + 3) . The judge will respond with a single integer f(xq)mod(106+3)f(x_q) \mod (10^6 + 3) . If you ever get a result of 1−1 (because you printed an invalid query), exit immediately to avoid getting other verdicts.

After printing a query do not forget to output end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use:

  • fflush(stdout) or cout.flush() in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • see documentation for other languages.

When you are ready to answer, print "! x0x_0 " where x0x_0 is the answer or 1-1 if there is no such x0x_0 .

You can ask at most 5050 questions per test case.

Hack Format

To hack, use the following format.

The only line should contain 1111 integers a0,a1,,a10a_0, a_1, \dots, a_{10} ( 0ai<106+30 \le a_i < 10^6 + 3 , max0i10ai>0\max\limits_{0 \le i \le 10}{a_i} > 0 ) — corresponding coefficients of the polynomial.

输入输出样例

  • 输入#1

     
    1000002
    
    0
    

    输出#1

    ? 0
    
    ? 1
    
    ! 1
  • 输入#2

     
    5
    
    2
    
    1
    
    

    输出#2

    ? 2
    
    ? 1
    
    ? 0
    
    ! -1

说明/提示

The polynomial in the first sample is 1000002+x21000002 + x^2 .

The polynomial in the second sample is 1+x21 + x^2 .

首页