讓我給妳我的出價,還有壹點解釋:
定義變量
t,b,n:int 64;
times,k,I,j:byte;
get:array[1..26]的字節;
dat:數組[0..27]的渴望;
開始
dat[1]:= 1;
b:= 1;
因為我:=2到26開始
b:= b * 2;
dat[I]:= b;
結束;
readln(次);
對於k:=1,開始計時
t:= 0;
readln(n);
如果(n & lt=0)或(n & gt67108863)然後開始
writeln(“無”);
退出;
結束;
重復
I:= 0;
復讀公司(壹);
直到(n & ltdat[i+1])或(i & gt=26);
Inc(t);
get[t]:= I;
dec(n,dat[I]);
直到n = 0;
for i:=t downto 1 do
write(chr(get[i]+64),' ');
writeln
結束;
結束。
想法:
這個問題是求2 k最接近n的值,然後從n中減去,記下k;重復該操作,直到n變為0。然後根據記錄的k值找出盤符。
樓主說妳的程序總是超時。我想妳壹定用過搜索?這個問題有壹些規律,不需要搜索。