NDK1473(植物擺放)

2021-05-26 22:12:31 字數 2163 閱讀 3886

高精度乘法、數學公式的推導能力

分析:1、根據題意可分析出土豆火箭一定安排在一起且土豆在前。

2、計算出放置多少個火箭使殭屍的傷害值最大。

設放置k個火箭;則土豆的個數為n-k。k確定了傷害值也就定了。

n-k個土豆的傷害為:a*k*(b+1)*(n-k);

k個火箭的傷害為a*k+2*a(k-1 + k-2 +…+1)=a*k*k。

總和為-a*b*k*k+a*b*n*k+a*n*k

k為何值時,上式達到最大值。k=n*(b+1)/(2*b)時,上式會達到極值。注意對k四捨五入。

k值確定就可以直接計算出最大的傷害值。需要高精度。

1、根據a b n的範圍可知計算k時可直接計算。

n, a, b, k: int64;

k := round(n*(b + 1)/(2*b); 一定要四捨五入

2、已知k代入下式計算

-a*b*k*k+a*b*n*k+a*n*k=-ak(b*k-b*n-n) =-ak(b(k-n)-n)=ak(b(n-k)+n) 

其中ak<=int64可儲存;b(n-k)+n<=int64可儲存

20位×20位結果40位。高精度乘法即可。

ps:表示不會高精度乘法——||

program plant;

var ans:array [-1..1000] of integer;

s1,s2:ansistring;

x,y,n,a,b,k:int64;

procedure change(xx:int64;var s:ansistring);

var i:longint;

t:char;

begin

s:='';

while xx>0 do

begin

s:=s+chr(ord(xx mod 10)+48);

xx:=xx div 10;

end;

for i:=1 to (length(s) >> 1) do

begin

t:=s[i];

s[i]:=s[length(s)-i+1];

s[length(s)-i+1]:=t;

end;

end;

procedure gjc(ss1,ss2:ansistring);

var i,j,len1,len2,jinwei,weishu:longint;

begin

len1:=length(ss1);

len2:=length(ss2);

for i:=1 to len2 do

begin

jinwei:=0;

for j:=1 to len1 do

begin

ans[i+j-1]:=(ord(ss1[len1+1-j])-48)*(ord(ss2[len2+1-i])-48)+jinwei+ans[i+j-1];

jinwei:=ans[i+j-1] div 10;

ans[i+j-1]:=ans[i+j-1] mod 10;

end;

weishu:=len1+i-1;

while jinwei<>0 do

begin

inc(weishu);

ans[weishu]:=(jinwei+ans[weishu]);

jinwei:=(ans[weishu]) div 10;

ans[weishu]:=(ans[weishu]) mod 10;

end;

end;

for i:=weishu downto 1 do write(ans[i]);

end;

begin

assign(input,'plant.in'); reset(input);

assign(output,'plant.out'); rewrite(output);

readln(n,a,b);

k:=round(n*(b+1)/(2*b));

x:=a*k;

y:=b*(n-k)+n;

change(x,s1);

change(y,s2);

gjc(s1,s2);

close(input); close(output);

end.

NDK開發指南 NDK安裝

android ndk 安裝 安裝 1 安裝需要 android ndk目前可以在linux os x 或者 windows作業系統上使用 windows使用者需要安裝cygwin1.7或以後的版本,注意,現在msys和cygwin1.5現在已經不支援了 你必須搭建了android sdk環境才可以...

NDK學習二 NDK目錄結構

ndk目錄結構 目錄名描述 build 其中makefile檔案都存放在build core目錄 docs 幫助文件 platforms 存放不同android版本,不同平台架構的標頭檔案和庫檔案 prebuilt 存放和編譯相關工具比如make.exe samples ndk 例子,用根目錄下的n...

NDK引用NDK生成的so

1 編譯so庫 假如我們的 需要加密而不被別人知道,這裡可以通過ndk編譯生成so 準備好加密 檔案 encrypt.h encrypt.c 放進jni目錄 編寫mk檔案,放進jni目錄 local path call my dir include clear vars local module e...