不定方程式の解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は
2013C2通り
このうち、2014は3で割り切れないので、A=B=Cである解はなく、A=B、B=C、C=Aである解
は、それぞれ (2014-2)÷2=1006(個)ずつ
よって、求める個数は、(2013C2-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は、
66C3通り
このうち、A=B=Cとなるのは、(67-1)÷3=22通り
A=B、B=C、C=Aとなるのはそれぞれ 33C2×2=1056通りずつ(*)なので、
求める個数は、 {66C3-(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
の結果で返されてきました。