function
【description】
我們定義如下函式:,給出x的初始值x0,通過不斷地代入x可以求得新的x'、x'',通過x'和x''代入公式又可以得到新的4個值。
給出a1,b1,d1,a2,b2,d2,初始值x0,問你迭代多次後得到的第n小的值是多少。
【input format】
第一行兩個數,為x0和n,第二行為a1,b1,d1,第三行為a2,b2,d2。
【output format】
乙個正整數,表示第n小的數的值。
【sample input】
3 10
4 3 3
17 8 2
【sample output】
【hint】
1、c=3
2、f1(3)=4×3/3+3 :7
3、f1(7)=4×7/3+3 :12
4、f1(12)=4×12/3+3 :19
5、f1(19)=4×19/3+3 :28
6、f2(3)=17×3/2+8 :33
7、f1(28)=4×28/3+3 :40
8、f1(33)=4×33/3+3 :47
9、f1(40)=4×40/3+3 :56
10、f1(47)=4×47/3+3 :65
【data】
對於100%的資料
x0≤100,n≤4000000
a1,b1,d1,a2,b2,d2≤20
涉及到的所有數字都將是整數。
這是一種經典的解題方法,首先設定兩個指標,分別指向 x0 經過函式 1 和 函式 2 所得出來的值,然後,從這兩個值中選乙個比較小的,然後擴充套件出兩個值,入隊,然後,將這兩個值中較小的那個指標加一。如果相同的話,兩個指標都加一。這樣依次類推,當總共入隊的值的數量達到 n 的時候,輸出。
注意一定要開乙個佇列,開兩個佇列不好判重,話說我就是 wa 在這了。
program _function(input,output);
varq:array[0..4000000] of int64;
n,p1,p2,tail,a1,a2,b1,b2,d1,d2:longint;
c,c1,c2:int64;
begin
assign(input,'function.in'); reset(input);
assign(output,'function.out'); rewrite(output);
readln(c,n);
readln(a1,b1,d1,a2,b2,d2);
tail:=1;
q[1]:=c;
p1:=1;
p2:=1;
while tailbegin
c1:=q[p1]*a1 div d1+b1;
c2:=q[p2]*a2 div d2+b2;
if (c1q[tail]) then
begin
inc(tail);
inc(p1);
q[tail]:=c1;
end else
if (c2q[tail]) then
begin
inc(tail);
inc(p2);
q[tail]:=c2;
end else
if (c1=c2)and(c1>q[tail]) then
begin
inc(tail);
q[tail]:=c1;
inc(c1);
inc(c2);
end else
if c1if c1>c2 then inc(p2) else
begin
inc(p1);
inc(p2);
end;
end;
writeln(q[n]);
close(input); close(output);
end.
Function執行報告
在我們的日常生活中,有很多時候都需要去列印具體的function的使用時長和記憶體消耗,以此來達到優化的目的,雖然 簡單,但是每每要去重新改動function,卻是一件很繁瑣的事情,我個人以此就封裝了乙個fuse類達到此目的,只需引用,然後呼叫run方法即可。方法功能 執行function 方法引數...
Block Voting 解題報告
這道題做的有點狼狽,效率不高,差一點就tle的ac了。看status裡的,ac的時間大多數都是0ms的。肯定有乙個更有效率的演算法的。下面說下我的狼狽演算法。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1223 問題描述 求每個party的權值。第i...
Safebreaker 解題報告
又是吉林大學一道acm題目,題目很簡單,直接暴力解決。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1718 問題描述 對乙個給定數0000 9999 根據一系列猜測,判斷這個數是否存在,存在的話,是否唯一 例如 3321,給定數 作出猜測,1223 ...