不是VIP会员,不能显示答案

题目解答

题目:
const
SIZE = 10000;
LENGTH = 10;
var
sum : longint;
n,m,I,j : integer;
a:array[1..SIZE , 1..LENGTH]of integer;

function h(u , v :integer):integer;
var
ans,i : integer;
begin
ans:=0;
for i:=1 to n do
if a[u][i] <> a[v][i] then
inc(ans);
h := ans;
end;

begin
readln(n);
fillchar(a,sizeof (a),0);
m:=1;
repeat
i := 1;
while (i <=n) and (a[m][i] =1 ) do
inc(i);
if i>n then
break;
a[m][i]:=1;
for j:=i + 1 to n do
a[m][j] := a[m-1][j];
until false;
sum := 0;
for i := 1 to m do
for j := 1 to m do
sum := sum + h(i,j);
writeln(sum);
end.

输入:7
输出:57344
考点: 0
分析:
解答: 这题比起前几题难多了,我看了半天也看不懂这是干啥的,然后手工模拟,还是不懂是干啥的。于是输入小n,得出sum,找规律。
     n=1,sum=2
     n=2,sum=16
     n=3,sum=96
     n=4,sum=512
     算这个费了很长时间- -然后还得花时间找规律…我这方法是很不好的方法,大家不要学我。
     然后规律是sum=2^(2n-1) *n,然后就能算出n=7的情况了。(其实我当时还没找到这个规律,找到的是sum=2^n*m,m是个很难算的数,用到了杨辉三角…考完后我发现蛋疼了)
     57344=2^13 *7。
评论:
老师: 0