<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ユークリッドの互除法メニュー - IQパズルステップ</title>
	<atom:link href="https://chokomon.com/category/paiza/24-euclidean_primer/feed/" rel="self" type="application/rss+xml" />
	<link>https://chokomon.com</link>
	<description>ちょこっと頭を良くするIQパズル問題集</description>
	<lastBuildDate>Mon, 22 Aug 2022 19:09:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://chokomon.com/wp-content/uploads/2022/02/cropped-icon512-32x32.png</url>
	<title>ユークリッドの互除法メニュー - IQパズルステップ</title>
	<link>https://chokomon.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【ユークリッドの互除法メニュー】ax + by = c (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/24-euclidean_primer-01-04-00594/</link>
					<comments>https://chokomon.com/24-euclidean_primer-01-04-00594/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Mon, 22 Aug 2022 19:09:25 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[ユークリッドの互除法メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1600]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6541</guid>

					<description><![CDATA[【ユークリッドの互除法メニュー】> 【拡張ユークリッドの互除法】STEP: 4 ax + by = c (paizaランク C 相当) [難易度: 1626 ±36] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答…]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/24-euclidean_primer/">ユークリッドの互除法メニュー</a>】> <a href="https://paiza.jp/works/mondai/euclidean_primer/euclidean_primer__ax+by=c" target="_blank" rel="noreferrer noopener">【拡張ユークリッドの互除法】STEP: 4 ax + by = c (paizaランク C 相当)</a> [難易度: <strong>1626 ±36</strong>]



<p>※リンク先へ移動するためには[<a rel="noreferrer noopener" href="https://paiza.jp/works" target="_blank">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-04-01.png" alt="" class="wp-image-6542"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>ユークリッドの互除法の操作を応用させると、一見最大公約数とは関連のなさそうな 2 変数の一次方程式の整数解を求めることができます。<br><br>例として、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">15x + 100y = 10</mark></code> の整数解 x , y を求めることを考えます。<br>x , y の係数である 15 , 100 についてユークリッドの互除法の操作を行うと、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">100 / 15 = 6 余り 10</mark></code><br>この式を変形することで、 <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">100 - 6×15 = 10</mark></code> が得られるので、答えは <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">x = -6 , y = 1</mark></code> と求まります。<br><br>整数 A,B,C が与えられるので、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">Ax + By = C</mark></code> の整数解 x , y の値を 1 行で半角スペース区切りで出力してください。<br>解の組 (x , y) のうち、x または y が 1 であるような解の組の値を出力してください。<br><br>ただし、 <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">C = A%B</mark></code> または <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">C = B%A</mark></code> であることが保証されています。</p>



<p></p>



<p><strong>入力値（例）</strong><br>8373 24 21</p>



<p><strong>出力値（例）</strong><br>1 -348</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    list($a, $b, $c) = explode(" ", trim(fgets(STDIN)));

    if ($a &gt; $b) {
        printf("%d %d\n", 1, ($c - $a) / $b);
        
    }else if ($a &lt; $b) {
        printf("%d %d\n", ($c - $b) / $a, 1);
    }
    return 0;
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-04-02.png" alt="" class="wp-image-6543"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/24-euclidean_primer-01-04-00594/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【ユークリッドの互除法メニュー】最小公倍数 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/24-euclidean_primer-01-03-00593/</link>
					<comments>https://chokomon.com/24-euclidean_primer-01-03-00593/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Mon, 22 Aug 2022 18:25:37 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[ユークリッドの互除法メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6534</guid>

					<description><![CDATA[【ユークリッドの互除法メニュー】> 【拡張ユークリッドの互除法】STEP: 3 最小公倍数 (paizaランク C 相当) [難易度: 1517 ±34] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/24-euclidean_primer/">ユークリッドの互除法メニュー</a>】> <a href="https://paiza.jp/works/mondai/euclidean_primer/euclidean_primer__lcm" target="_blank" rel="noreferrer noopener">【拡張ユークリッドの互除法】STEP: 3 最小公倍数 (paizaランク C 相当)</a> [難易度: <strong>1517 ±34</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-03-01.png" alt="" class="wp-image-6535"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>最大公約数（以後 gcd）と対になる値として、最小公倍数（以後 lcm）があります。<br>一般的に直接 lcm を求めるよりも、gcd を求めてから計算によって lcm を求める方が簡単とされています。<br>2 つの整数 A , B の lcm(A,B) は、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">lcm(A,B) = A×B/gcd(A,B)</mark></code> で求めることができます。<br>2 つの整数 A , B が与えられるので、lcm (A,B) を求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>6 39</p>



<p><strong>出力値（例）</strong><br>78</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    list($a, $b) = explode(" ", trim(fgets(STDIN)));
    
    //最大公約数
    function gcd($x, $y){
        if($y &gt; $x) list($x, $y) = array($y, $x);
         
        while($y !== 0){
            $tmp = $y;
            $y = $x % $y;
            $x = $tmp;
        }
        return $x;
    }
     
    //最小公倍数
    function lcm($x, $y){
        return $x * $y / gcd($x, $y);
    }
    
    echo lcm($a, $b);
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-03-02.png" alt="" class="wp-image-6536"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/24-euclidean_primer-01-03-00593/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【ユークリッドの互除法メニュー】3 つ以上の整数の最大公約数 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/24-euclidean_primer-01-02-00586/</link>
					<comments>https://chokomon.com/24-euclidean_primer-01-02-00586/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Sat, 20 Aug 2022 02:30:16 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[ユークリッドの互除法メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1600]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6488</guid>

					<description><![CDATA[【ユークリッドの互除法メニュー】> 【拡張ユークリッドの互除法】STEP: 2 3 つ以上の整数の最大公約数 (paizaランク C 相当) [難易度: 1661 ±30] ※リンク先へ移動するためには[paiza]へのログインが必要です。…]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/24-euclidean_primer/">ユークリッドの互除法メニュー</a>】> <a rel="noreferrer noopener" href="https://paiza.jp/works/mondai/euclidean_primer/euclidean_primer__multi_gcd" target="_blank">【拡張ユークリッドの互除法】STEP: 2 3 つ以上の整数の最大公約数 (paizaランク C 相当)</a> [難易度: <strong>1661 ±30</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-02-01.png" alt="" class="wp-image-6489"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>2 つの整数 A , B の最大公約数（以後 gcd(A , B))を高速に求めるアルゴリズムとして、ユークリッドの互除法があります。<br>gcd の演算では、3 つの整数 a, b, c の最大公約数は、gcd(gcd(a,b),c) で求めることができます。<br>これは 4 つ以上の整数の場合も同様に、a , b , c , d , e , ... の最大公約数は<br>gcd(...gcd(gcd(gcd(gcd(a,b),c),d),e)...) で求めることができます。</p>



<p>例として、(9,27,33) の最大公約数は gcd(gcd(9,27),33) = gcd(9,33) = 3 といった具合に求めることができます。</p>



<p>与えられる整数の数 N と、整数 A_1, ..., A_N が与えられるので、 A_1, ..., A_N の最大公約数を求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>3<br>6<br>18<br>30</p>



<p><strong>出力値（例）</strong><br>6</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    $n = trim(fgets(STDIN));
    for ($i = 0; $i &lt; $n; $i++) {
        $a[] = trim(fgets(STDIN));
    }
    
    $ans = $a[0];
    
    for ($i = 0; $i &lt; $n-1; $i++) {
        $ans = gcd($ans, $a[$i+1]);
    }
    
    printf("%d\n", $ans);
    
    function gcd($x, $y) {
        if($x == 0) return $y;
        if($y == 0) return $x;
        
        if ($x &gt; $y) {
            return gcd($x % $y, $y);
            
        } elseif ($y &gt; $x) {
            return gcd($x, $y % $x);
        }
        
        return -1;
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-02-02.png" alt="" class="wp-image-6490"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/24-euclidean_primer-01-02-00586/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【ユークリッドの互除法メニュー】ユークリッドの互除法 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/24-euclidean_primer-01-01-00585/</link>
					<comments>https://chokomon.com/24-euclidean_primer-01-01-00585/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Fri, 19 Aug 2022 19:07:12 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[ユークリッドの互除法メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1300]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6481</guid>

					<description><![CDATA[【ユークリッドの互除法メニュー】> 【拡張ユークリッドの互除法】STEP: 1 ユークリッドの互除法 (paizaランク C 相当) [難易度: 1383 ±27] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/24-euclidean_primer/">ユークリッドの互除法メニュー</a>】> <a href="https://paiza.jp/works/mondai/euclidean_primer/euclidean_primer__simple_gcd" target="_blank" rel="noreferrer noopener">【拡張ユークリッドの互除法】STEP: 1 ユークリッドの互除法 (paizaランク C 相当)</a> [難易度: <strong>1383 ±27</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-01-01.png" alt="" class="wp-image-6482"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>2 つの整数 A , B の最大公約数（以後 gcd(A , B)）を高速に求めるアルゴリズムとして、ユークリッドの互除法があります。<br>gcd(A, B) をユークリッドの互除法で求める手順は次の通りです。<br></p>



<p class="has-gray-background-color has-background">1. A , B のうち、いずれかが 0 の場合 手順 3 に進む<br>2. A , B のうち小さい方で大きい方をわり、大きい方をその余りで置き換え、手順 1 に戻る<br>3. このとき、0 でない方の数が求めたい最大公約数になっている。</p>



<p>例として A = 15 , B = 40 にユークリッドの互除法を用いて最大公約数を求めると、次の通りになります。<br>（[]内の数字は手順の番号を表す）</p>



[2] A = 15 , B = 40<br>[3] A &lt; B なので B / A = 2 余り 10 より B = 10<br>[2] A = 15 , B = 10<br>[3] B &lt; A なので A / B = 1 余り 5 より A = 5<br>[2] A = 5 , B = 10<br>[3] A &lt; B なので B / A = 2 余り 0 より B = 0<br>[2] A = 5 , B = 0<br>[4] よって、15 と 40 の最大公約数は 5 となる。</p>



<p>2 つの整数 A , B が与えられるので、ユークリッドの互除法を用いて A , B の最大公約数を求めましょう。</p>



<p></p>



<p><strong>入力値（例）</strong><br>45 15</p>



<p><strong>出力値（例）</strong><br>15</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    list($a, $b) = explode(" ", trim(fgets(STDIN)));
    
    // 自然数 a &gt; b を確認・入替
    if ($a &lt; $b) {
        $tmp = $a;
        $a = $b;
        $b = $tmp;
    }
    
    // ユークリッドの互除法
    $r = $a % $b;
    while ($r != 0) {
        $a = $b;
        $b = $r;
        $r = $a % $b;
    }
    echo $b. "\n";
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/08/24-01-01-02.png" alt="" class="wp-image-6483"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/24-euclidean_primer-01-01-00585/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
