Áp dụng Định lý Viète


Submit solution

Points: 3
Time limit: 1.0s
Memory limit: 98M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Khi tìm hiểu về Định lý Viète, Toto thấy rằng nếu phương trình bậc hai \(x^2+bx+c=0\) với \(b,c\) là các giá trị nguyên có hai nghiệm thực \(\alpha\) và \(\beta\) thì với số tự nhiên \(n\) bất kỳ đều có

\( \alpha^n + \beta^n \) cũng là là số nguyên

Bài toán đặt ra là nhập vào b,c,n tính giá trị của biểu thức \( \alpha^n + \beta^n \)

Input

Dòng đầu là số bộ kiểm thử \(t (1 \le t \le 100)\)

Các dòng tiếp theo gồm \(t\) dòng mỗi dòng chứa 3 giá trị \(b,c\) có giá trị tuyệt đối nhỏ hơn hay bằng 1000 và số nguyên dương \(n\) không vượt quá 1000 biết rằng \(b,c\) thỏa mãn điều kiện để phương trình luôn có hai nghiệm thực

Output

Gồm \(t\) dòng mỗi dòng là kết quả của một trường hợp kiểm thử vì kết quả có thể rất lớn nên chỉ lấy phần dư của nó cho 1000000007 \((1e9+7)\) là một số tự nhiên

Ví dụ

Input

3
-4 0 5
-1 -6 3
-1 -1 3

Output

1024
19
4

Giải thích:

ở test 1 phương trình \(x^2-4x=0\) có hai nghiệm là \(4\) và \(0\) ta có \(4^5+0^5=1024\)

ở test 2 phương trình \(x^2-x-6=0\) có hai nghiệm là \(-2\) và \(3\) ta có \((-2)^3+3^3=19\)

ở test 3 phương trình \(x^2-x-1=0\) có hai nghiệm là \(\frac{1-\sqrt{5}}{2}\) và \(\frac{1+\sqrt{5}}{2}\) ta có

\[{{\left( \frac{1-\sqrt{5}}{2} \right)}^{3}}+{{\left( \frac{1-\sqrt{5}}{2} \right)}^{3}}=4\]

tichpx

Comments


  • 0
    TICHPX  commented on Oct. 26, 2021, 3:46 a.m.

    Gợi ý: Anh em học toán rời rạc rồi bài này hướng làm ngược của bài giải biểu thức truy hồi


  • 0
    LãoTam  commented on Oct. 25, 2021, 3:26 p.m.

    [user:^_^]

    #include<bits/stdc++.h>
    #include<iostream>
    using namespace std;
    int main(){
        int n,b[100],c[100],s[100],delta[100];
        float x1[100],x2[100];
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>b[i]>>c[i]>>s[i];
        }
        for(int i=0;i<n;i++){
    
            delta[i] = b[i]*b[i] - 4*c[i];
            if(delta[i] > 0) {
                x1[i] = (-b[i]+sqrt(delta[i]))/(2);
                x2[i] = (-b[i]-sqrt(delta[i]))/(2);
    
            } else if ( delta == 0) {
                x1[i]=-b[i]/2;
                            x2[i]=-b[i]/2;
    
            } 
            cout<<pow(x1[i],s[i])+pow(x2[i],s[i])<<endl;
        }
    
        return 0;
    }

    cho em hỏi em sai ở đâu thế ạ


    • 0
      TICHPX  commented on Oct. 26, 2021, 3:43 a.m.

      nó là số nguyên mà lại lấy phần dư của nó cho 10^9+7 cơ mà em