JZ初中OJ 2266. 古代人的難題


題目描述

      門打開了, 里面果然是個很大的廳堂。但可惜廳堂內除了中央的一張羊皮紙和一根精致的石筆,還有周圍幾具骷髏外什么也沒有。 難道這就是王室的遺產? 小 FF 不信,他仔細閱讀了羊皮紙上的內容后發現,里面書寫的古代人一直沒能解出的難題, 解除這道題目的人只要將答案用石筆寫到這張羊皮紙上就能到達王室的寶藏室了。而當小 FF 拿起石筆后,剛剛打開的巨石門突然關上了。 這時小 FF 意識到原來那幾具骷髏是在他之前到這里的冒險者,恐怕是因為沒能破解這道題而困死在這里了。 小 FF 越想越害怕, 急忙聯系到了你,為了能保命,他甚至願意和你五五分……看來你不得不再次幫他了。 羊皮紙上的問題如下:
      已知 x, y 為整數,且滿足以下兩個條件:
      1. x, y ϵ [1..k], 且x,y,k ϵ Z;
      2. (x^2 – xy – y^2)^2 = 1
      給你一個整數 k, 求一組滿足上述條件的 x, y 並且使得 x^2 + y^2 的值最大。
      當小 FF 得到答案后, 用石筆將答案書寫在羊皮紙上,那么就能到達王室的遺產所在地了。
 

輸入

一個整數 k

輸出

輸出文件僅一行,兩個整數;
兩個整數分別表示 x 和 y。x, y 之間用一個空格隔開。

 
 

樣例輸入

1995

樣例輸出

1597 987
 

數據范圍限制

對於 30%的數據: 2<=k<=10^4.
對於 100%的數據: 2<=k<=10^18.

 
 

提示

Z是數學里面整數集合符號,  即x y k都是整數
 1 #include <stdio.h>
 2 long int a,b,c,k;
 3 int main()
 4 {
 5     freopen("puzzle.in","r",stdin);
 6     freopen("puzzle.out","w",stdout);
 7     scanf("%lld",&k);
 8     a=b=1;
 9     while(a<=k)
10     {
11         c=a;
12         a=a+b;
13         b=c;
14     }
15     printf("%lld %lld",b,a-b);
16 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM