回 帖 发 新 帖 刷新版面

主题:求助一道关于解方程的编程题!!!!!

对于不定方程a1+a2+…+ak-1+ak=g(x),其中k≥2且k∈N*,x是正整数,g(x)=xx mod 1000,x,k是给定的数。我们要求的是这个不定方程的正整数解组数。
    举例来说,当k=3,x=2时,g(x)=4,原方程即al+a2+a3=4。
    这个方程的正整数解有3组,分别为(a1,a2,a3)a=(2,1,1),(1,2,1),(1,1,2)。
    【输入文件】
    输入文件equation.in有且只有一行,为用空格隔开的两个正整数,依次为k,x。
    【输出文件】
    输出文件equation.out有且只有一行,为方程的正整数解组数。
    【样例输入】
    3 2
    【样例输出】
    3
    【数据范围】
    对于40%的数据,ans≤1O16;
    对于100%的数据,k≤100,x≤231-1,k≤g(x)。

回复列表 (共1个回复)

沙发

程序很短:
var k,i,j:integer;
    x:longint;
    a:array[0..100,0..100] of integer;
begin
  readln(k,x);
  x:=(x mod 1000*x) mod 1000;
  a[0,0]:=1;
  for i:=1 to x do
   for j:=1 to k do
     a[i,j]:=a[i-1,j-1]+a[i-1,j];
  writeln(a[x,k]);
  readln
end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册