不定方程式の解3                            戻る

 当HPがいつもお世話になっているHN「よおすけ」さんからの出題です。
                                      (平成30年5月11日付け)

 次の問いに答えよ。

(1) 3x+2y≦2008 を満たす0以上の整数の組(x,y)の個数を求めよ。

(2) (x/2)+(y/3)+(z/6)≦10 を満たす0以上の整数の組(x,y,z)の個数を求めよ。

出典:2008年 名古屋大学 理系 問題4a、(1)は2008年 名古屋大学 文系 問題3a(2)と同一。



































(答) 当HPがいつもお世話になっているHN「らすかる」さんが考察されました。
                                      (平成30年5月12日付け)

(1) 問題は、3x+2y+z=2008 を満たす0以上の整数の組(x,y,z)としても同じ

 a=x、b=x+y、c=x+y+z とおくと、a+b+c=2008、0≦a≦b≦c

 A=a+1、B=b+2、C=c+3 とおくと、 A+B+C=2014、0<A<B<C

 A、B、C の大小関係を考えないとき、A+B+C=2014 を満たす自然数A、B、Cは

 20132通り

 このうち、2014は3で割り切れないので、A=B=Cである解はなく、A=B、B=C、C=Aである解

は、それぞれ (2014-2)÷2=1006(個)ずつ

 よって、求める個数は、(20132-1006×3)÷3!=337010(個)

(2) x/2+y/3+z/6≦10 より、3x+2y+z≦60 で、

  3x+2y+z+w=60 を満たす0以上の整数の組(x,y,z,w)としても同じ

 a=x、b=x+y、c=x+y+z、d=w とおくと、 a+b+c+d=60、0≦a≦b≦c

 A=a+1、B=b+2、C=c+3、D=d+1 とおくと、A+B+C+D=67、0<A<B<C

 A、B、C、D の大小関係を考えないとき、A+B+C+D=67 を満たす自然数A、B、C、Dは、

 663通り

 このうち、A=B=Cとなるのは、(67-1)÷3=22通り

 A=B、B=C、C=Aとなるのはそれぞれ 33C2×2=1056通りずつ(*)なので、

 求める個数は、 {663-(1056-22)×3-22}÷3!=7106(通り)

(*) 例えば、B=Cとなるとき、

  67個の○の間66箇所中3箇所に仕切り入れるとすると、

   一つ目の仕切りが奇数番目なら三つ目の仕切りも奇数番目、
   一つ目の仕切りが偶数番目なら三つ目の仕切りも偶数番目

 前者は、66箇所中の1,3,5,7,…,65番目から一つ目の仕切りと三つ目の仕切りを入れる場所
を選べば、二つ目の仕切りは自動的に決まる。

 後者は、66箇所中の2,4,6,8,…,66番目から一つ目の仕切りと三つ目の仕切りを入れる場所
を選べば、二つ目の仕切りは自動的に決まる

 よって、33C2×2=1056通り


 GAI さんからのコメントです。(平成30年5月13日付け)

 以前、本でポポビチュ(Popoviciu)の定理を4次元に拡張した式に巡り合った時に、次の記述
をメモしていました。

 ここに、一般に、a、b、c、d、n を自然数とするとき、 a*x+b*y+c*z+d*w=n を満たす非負
整数の組(x,y,z,w)の個数は、

 K(x)=cos(2*Pi/x)+I*sin(2*Pi/x)

を準備して(Iは虚数単位)

P4(a,b,c,d,n)=n^3/(6*a*b*c*d)+n^2/4*(1/(a*b*c)+1/(a*b*d)+1/(a*c*d)+1/(b*c*d))
        +n/12*(3/(a*b)+3/(a*c)+3/(a*d)+3/(b*c)+3/(b*d)+3/(c*d)+a/(b*c*d)
        +b/(a*c*d)+c/(a*b*d)+d/(a*b*c))+1/24*(a*(1/(b*c)+1/(b*d)+1/(c*d))
        +b*(1/(a*d)+1/(a*c)+1/(c*d))+c*(1/(a*b)+1/(a*d)+1/(b*d))+d*(1/(a*b)
        +1/(a*c)+1/(b*c)))+1/8*(1/a+1/b+1/c+1/d)
        +1/a*sum(k=1,a-1,1/((1-K(a)^(k*b))*(1-K(a)^(k*c))*(1-K(a)^(k*d))*K(a)^(k*n)))
        +1/b*sum(k=1,b-1,1/((1-K(b)^(k*c))*(1-K(b)^(k*d))*(1-K(b)^(k*a))*K(b)^(k*n)))
        +1/c*sum(k=1,c-1,1/((1-K(c)^(k*d))*(1-K(c)^(k*a))*(1-K(c)^(k*b))*K(c)^(k*n)))
        +1/d*sum(k=1,d-1,1/((1-K(d)^(k*a))*(1-K(d)^(k*b))*(1-K(d)^(k*c))*K(d)^(k*n)))

で定義して計算させると求まるそうです。

 ここに、

gp > P4(3,2,1,1,60)
%19 = 7106.0000000000000000000000000000000000 + 0.E-37*I

の結果で返されてきました。