<?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>難易度-1700 - IQパズルステップ</title>
	<atom:link href="https://chokomon.com/tag/difficulty-1700/feed/" rel="self" type="application/rss+xml" />
	<link>https://chokomon.com</link>
	<description>ちょこっと頭を良くするIQパズル問題集</description>
	<lastBuildDate>Thu, 15 Sep 2022 09:03:35 +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>難易度-1700 - IQパズルステップ</title>
	<link>https://chokomon.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【累積和メニュー】【2 次元上のいもす法】 2 次元上のいもす法 6 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/27-prefix_sum_problems-07-06-00646/</link>
					<comments>https://chokomon.com/27-prefix_sum_problems-07-06-00646/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Thu, 15 Sep 2022 09:03:35 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[累積和メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6868</guid>

					<description><![CDATA[【累積和メニュー】> FINAL問題【2 次元上のいもす法】 2 次元上のいもす法 6 (paizaランク C 相当) [難易度: 1700 ±44] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/27-prefix_sum_problems/">累積和メニュー</a>】> <a href="https://paiza.jp/works/mondai/prefix_sum_problems/prefix_sum_problems__2d_imos_boss" target="_blank" rel="noreferrer noopener">FINAL問題【2 次元上のいもす法】 2 次元上のいもす法 6 (paizaランク C 相当)</a> [難易度: <strong>1700 ±44</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 fetchpriority="high" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/27-07-06-01.png" alt="" class="wp-image-6869"/></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>1 行目に整数 N, M, K が与えられます。</p>



<p>2 行目に a_i, b_i, c_i, d_i (1 ≦ i ≦ K) が K 行で与えられます。</p>



<p>N 行 M 列のマスがあり、最初、マスには全て 0 が書かれています。</p>



<p>K 個の長方形領域の左上の座標 (a_i, b_i) と右下の座標 (c_i, d_i) が与えられます。それぞれの範囲に対して、その範囲に含まれるマスに 1 を加算していきます。</p>



<p>N 行 M 列のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>5 5 5<br>1 1 3 3<br>2 2 4 4<br>3 3 5 5<br>1 3 3 5<br>3 1 5 3</p>



<p><strong>出力値（例）</strong><br>5</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($n, $m, $k) = explode(" ", trim(fgets(STDIN)));
    
    $sRow = array_fill(0, $m+1, 0);
    $s = array_fill(0, $n+1, $sRow);
    
    for ($i=0; $i&lt;$k; $i++) {
        list($a, $b, $c, $d) = explode(" ", trim(fgets(STDIN)));
        $x1[] = $a;
        $y1[] = $b;
        $x2[] = $c;
        $y2[] = $d;
        
        $s[$y1[$i]-1][$x1[$i]-1]++;
        $s[$y2[$i]][$x2[$i]]++;
        $s[$y1[$i]-1][$x2[$i]]--;
        $s[$y2[$i]][$x1[$i]-1]--;
    }
    
    // 横方向への累積和
    for ($i=0; $i&lt;$n+1; $i++) {
        for ($j=1; $j&lt;$m+1; $j++) {
            $s[$i][$j] += $s[$i][$j-1];
        }
    }
    
    // 縦方向の累積和
    for ($i=1; $i&lt;$n+1; $i++) {
        for ($j=0; $j&lt;$m+1; $j++) {
            $s[$i][$j] += $s[$i-1][$j];
        }
    }
    //print_r($s);
    
    // 最大値を調べる
    $tile_max = 0;
    for ($i=0; $i&lt;$n+1; $i++) {
        for ($j=0; $j&lt;$m+1; $j++) {
            if ($tile_max &lt; $s[$i][$j]) {
                $tile_max = $s[$i][$j];
            }
        }
    }
    echo $tile_max;
?&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/09/27-07-06-02.png" alt="" class="wp-image-6870"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/27-prefix_sum_problems-07-06-00646/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クエリメニュー】二次元区間和 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/17-query_primer-03-04-00605/</link>
					<comments>https://chokomon.com/17-query_primer-03-04-00605/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 31 Aug 2022 18:29:42 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クエリメニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6607</guid>

					<description><![CDATA[【クエリメニュー】> 【平方分割】STEP: 4 二次元区間和 (paizaランク B 相当) [難易度: 1725 ±29] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/17-query_primer/">クエリメニュー</a>】> <a href="https://paiza.jp/works/mondai/query_primer/query_primer__two_dimensions_interval_sum" target="_blank" rel="noreferrer noopener">【平方分割】STEP: 4 二次元区間和 (paizaランク B 相当)</a> [難易度: <strong>1725 ±29</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/09/17-03-04-01.png" alt="" class="wp-image-6608"/></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>H 行 W 列 の行列 A の 2 つの行・列番号の組 {a , b} , {c , d} における区間和 S({a,b} , {c,d}) (a ≦ c , b ≦ d) を以下の数式・図の通り定義します。以後 A の y 行 x 列の要素を A[y][x] と表すことにします。</p>



<p>S({a,b} , {c,d}) = A[a][b] + A[a][b+1] + ... + A[a][d] + A[a+1][1] + ... + A[a+1][d] + ... + A[c][1] + ... + A[c][d]



<p>例として、入力例 1 の A における S({2,2},{3,3}) は以下の通りになり、値は 28 となります。</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://chokomon.com/wp-content/uploads/2022/09/1.jpeg" alt="" class="wp-image-6609" width="512" height="384" srcset="https://chokomon.com/wp-content/uploads/2022/09/1.jpeg 1024w, https://chokomon.com/wp-content/uploads/2022/09/1-768x576.jpeg 768w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure>



<p>H 行 W 列 の行列 A と、区間和を求めたいペアについての情報が与えられるので、各ペアについて累積和を求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>3 3 2<br>1 2 3<br>4 5 6<br>7 8 9<br>1 1 3 3<br>1 2 2 3</p>



<p><strong>出力値（例）</strong><br>45<br>16</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($h, $w, $n) = explode(" ", trim(fgets(STDIN)));
    
    $sum = [[]];
    
    for ($i = 0; $i &lt; $h; $i++) {
        $a[$i] = explode(" ", trim(fgets(STDIN)));
        
        for ($j = 0; $j &lt; $w; $j++) {
            $sum[$i][$j] = $a[$i][$j];
            
            if (0 &lt; $i) $sum[$i][$j] += $sum[$i-1][$j];
            if (0 &lt; $j) $sum[$i][$j] += $sum[$i][$j-1];
            if (0 &lt; $i &amp;&amp; 0 &lt; $j) $sum[$i][$j] -= $sum[$i-1][$j-1];
        }
    }
    //print_r($sum);
    
    for ($i = 0; $i &lt; $n; $i++) {
        list($a, $b, $c, $d) = explode(" ", trim(fgets(STDIN)));
        
        $a--; $b--; $c--; $d--;
        
        if ($a&gt;0 &amp;&amp; $b&gt;0) {
            $ans = $sum[$c][$d]+$sum[$a-1][$b-1]-$sum[$a-1][$d]-$sum[$c][$b-1];
        } else if ($a==0 &amp;&amp; $b&gt;0) {
            $ans = $sum[$c][$d]-$sum[$c][$b-1];
        } else if ($a&gt;0 &amp;&amp; $b==0) {
            $ans = $sum[$c][$d]-$sum[$a-1][$d];
        } else if($a==0 &amp;&amp; $b==0) {
            $ans = $sum[$c][$d];
        }
        
        printf("%d\n",$ans);
    }
?&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="200" src="https://chokomon.com/wp-content/uploads/2022/09/17-03-04-02.png" alt="" class="wp-image-6610"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/17-query_primer-03-04-00605/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クエリメニュー】累積和 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/17-query_primer-03-01-00602/</link>
					<comments>https://chokomon.com/17-query_primer-03-01-00602/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Mon, 29 Aug 2022 02:29:38 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クエリメニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6589</guid>

					<description><![CDATA[【クエリメニュー】> 【平方分割】STEP: 1 累積和 (paizaランク C 相当) [難易度: 1753 ±26] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例 解説 長さNの数列AとK行の整数Qが与えら…]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/17-query_primer/">クエリメニュー</a>】> <a href="https://paiza.jp/works/mondai/query_primer/query_primer__cumulative_sum" target="_blank" rel="noreferrer noopener">【平方分割】STEP: 1 累積和 (paizaランク C 相当)</a> [難易度: <strong>1753 ±26</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/17-03-01-01.png" alt="" class="wp-image-6590"/></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>長さ N の数列 A と、K 個の整数 Q_1 ... Q_K が与えられるので、各整数 Q_i (1 ≦ i ≦ K) について A_1 ... A_{Q_i} の和を求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>3 1<br>69<br>12<br>28<br>3</p>



<p><strong>出力値（例）</strong><br>109</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($n, $k) = explode(" ", trim(fgets(STDIN)));
    
    $ans = [];
    
    for ($i = 0; $i &lt; $n; $i++) {
        $a[$i] = trim(fgets(STDIN));
        
        if ($i == 0) {
            $ans[$i] = $a[$i];

        } else {
            $ans[$i] = $ans[$i-1] + $a[$i];
        }
    }
    //print_r($ans);
    
    for ($i = 0; $i &lt; $k; $i++) {
        $q = trim(fgets(STDIN));
        echo $ans[$q-1]. "\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/17-03-01-02.png" alt="" class="wp-image-6591"/></figure>



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



<p>長さNの数列AとK行の整数Qが与えられ、数列Aの最初から整数Qまで合計を出力する問題。<br>入力値（例）の例でいうと、整数Qが2だった場合は、数列Aの1番目の69と数列Aの2番目の12で69+12=81になります。</p>



<p>まず、数列Aを受け取ったとき、iが0の場合（一番初めの数値）は配列ansに格納します。次からの数列Aは、[i-1]、つまり前の配列に足して格納します。</p>



<figure class="wp-block-table"><table><tbody><tr><td>ans[0]</td><td>69</td><td>69</td></tr><tr><td>ans[1]</td><td>12</td><td>ans[1-1](69)+a[1](12)=81</td></tr><tr><td>ans[2]</td><td>28</td><td>ans[2-1](81)+a[2](28)=109</td></tr></tbody></table></figure>



<p>配列ansにすでに合計した値が入っているので、整数Qを受け取ったら、そのまま配列ans[Q]で出力します。</p>



<p></p>



<p>整数Qを受け取ってから、A_1からA_Qまでの和をいちいち計算していたらタイムオーバーになってしまいました。この問題で累積和の意味が少し分かりました。(*'ω'*)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/17-query_primer-03-01-00602/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クエリメニュー】銀行 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/17-query_primer-02-03-00597/</link>
					<comments>https://chokomon.com/17-query_primer-02-03-00597/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Fri, 26 Aug 2022 01:46:44 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クエリメニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6558</guid>

					<description><![CDATA[【クエリメニュー】> 【Vtuber】STEP: 3 銀行 (paizaランク B 相当) [難易度: 1721 ±24] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/17-query_primer/">クエリメニュー</a>】> <a href="https://paiza.jp/works/mondai/query_primer/query_primer__bank" target="_blank" rel="noreferrer noopener">【Vtuber】STEP: 3 銀行 (paizaランク B 相当)</a> [難易度: <strong>1721 ±24</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/17-02-03-01.png" alt="" class="wp-image-6559"/></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>2xxx年に paiza が設立した paiza 中央銀行に勤務する pai沢直樹は、故障した ATM の対応として、お金を引き出したい会社と電話をして、会社名が銀行の名簿に登録されており、かつ、会社側が会社の口座の暗証番号を正しく言えた場合にのみ現金を支払い、それを記帳するという業務を任されていました。</p>



<p>銀行に登録されている会社名とその口座の暗証番号と残高についての情報、また、直樹の電話の情報が与えられるので、全ての取引が終了した後の全ての会社の残高を出力してください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>3 5<br>A 0000 10000<br>B 1234 23456<br>C 5678 98765<br>A 0101 1000<br>B 1234 1000<br>C 5678 90000<br>A 0000 200<br>B 1233 10000</p>



<p><strong>出力値（例）</strong><br>A 9800<br>B 22456<br>C 8765</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($n, $k) = explode(" ", trim(fgets(STDIN)));
    
    for ($i = 0; $i &lt; $n; $i++) {
        list($c, $p, $d) = explode(" ", trim(fgets(STDIN)));
        
        $bank[$c] = array('number' =&gt; $p, 'money' =&gt; $d);
    }
    
    //print_r($bank);
    
    for ($i = 0; $i &lt; $k; $i++) {
        list($g, $m, $w) = explode(" ", trim(fgets(STDIN)));
        
        $pin = $bank[$g]['number'];
        
        if ($pin == $m) {
            $bank[$g]['money'] -= $w;
        }
    }

    $key = array_keys($bank);
    
    for ($i = 0; $i &lt; $n; $i++) {
        printf("%s %d\n", $key[$i], $bank[$key[$i]]['money']);
    }
?&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="200" src="https://chokomon.com/wp-content/uploads/2022/08/17-02-03-02.png" alt="" class="wp-image-6560"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/17-query_primer-02-03-00597/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【日付セット】西暦の和暦変換2 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/34-dateset-01-03-00580/</link>
					<comments>https://chokomon.com/34-dateset-01-03-00580/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 17 Aug 2022 18:55:43 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[日付セット]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6428</guid>

					<description><![CDATA[【日付セット】> 西暦の和暦変換2 (paizaランク C 相当) [難易度: 1790 ±19] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/paiza_set/34-dateset/">日付セット</a>】> <a href="https://paiza.jp/works/mondai/dateset/ad_to_era2" target="_blank" rel="noreferrer noopener">西暦の和暦変換2 (paizaランク C 相当)</a> [難易度: <strong>1790 ±19</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/34-01-03-01.png" alt="" class="wp-image-6429"/></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>西暦年y、月m、日付dが与えられるので、和暦で表示してください。</p>



<p>和暦は、以下の条件を確認し、西暦から変換してください。<br>・明治は1912年7月29日まで<br>・大正は1912年7月30日から1926年12月24日まで<br>・昭和は1926年12月25日から1989年1月7日まで<br>・平成は1989年1月8日から2019年4月30日まで<br>・令和は2019年5月1日から</p>



<p></p>



<p><strong>入力値（例）</strong><br>2019 5 1</p>



<p><strong>出力値（例）</strong><br>令和元年5月1日</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($y, $m, $d) = explode(" ", trim(fgets(STDIN)));
    
    $buf = $y*10000+$m*100+$d;
    
    if ($buf &lt;= 19120729) {
        if ($y-1868 == 0) {
            printf("明治元年%d月%d日", $m, $d);
        } else {
            printf("明治%d年%d月%d日", $y-1868+1, $m, $d);
        }
        
    } elseif (19120730 &lt;= $buf &amp;&amp; $buf &lt;= 19261224) {
        if ($y-1912 == 0) {
            printf("大正元年%d月%d日", $m, $d);
        } else {
            printf("大正%d年%d月%d日", $y-1912+1, $m, $d);
        }
        
    } elseif (19261225 &lt;= $buf &amp;&amp; $buf &lt;= 19890107) {
        if ($y-1926 == 0) {
            printf("昭和元年%d月%d日", $m, $d);
        } else {
            printf("昭和%d年%d月%d日", $y-1926+1, $m, $d);
        }
        
    } elseif(19890108 &lt;= $buf &amp;&amp; $buf &lt;= 20190430) {
        if ($y-1989 == 0) {
            printf("平成元年%d月%d日", $m, $d);
        } else {
            printf("平成%d年%d月%d日", $y-1989+1, $m, $d);
        }
        
    } elseif(20190501 &lt;= $buf) {
        if ($y-2019 == 0) {
            printf("令和元年%d月%d日", $m, $d);
        } else {
            printf("令和%d年%d月%d日", $y-2019+1, $m, $d);
        }        
    }
?&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/34-01-03-02.png" alt="" class="wp-image-6430"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/34-dateset-01-03-00580/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【日付セット】西暦の和暦変換 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/34-dateset-01-02-00579/</link>
					<comments>https://chokomon.com/34-dateset-01-02-00579/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 17 Aug 2022 18:42:04 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[日付セット]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6421</guid>

					<description><![CDATA[【日付セット】> 西暦の和暦変換 (paizaランク C 相当) [難易度: 1718 ±15] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/paiza_set/34-dateset/">日付セット</a>】> <a href="https://paiza.jp/works/mondai/dateset/ad_to_era" target="_blank" rel="noreferrer noopener">西暦の和暦変換 (paizaランク C 相当)</a> [難易度: <strong>1718 ±15</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/34-01-02-01.png" alt="" class="wp-image-6422"/></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>西暦年y、月m、日付dが与えられるので、和暦の元号を表示してください。</p>



<p>和暦は、以下の条件を確認し、西暦から変換してください。<br>・明治は1912年7月29日まで<br>・大正は1912年7月30日から1926年12月24日まで<br>・昭和は1926年12月25日から1989年1月7日まで<br>・平成は1989年1月8日から2019年4月30日まで<br>・令和は2019年5月1日から</p>



<p></p>



<p><strong>入力値（例）</strong><br>2019 5 1</p>



<p><strong>出力値（例）</strong><br>令和年5月1日</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($y, $m, $d) = explode(" ", trim(fgets(STDIN)));
    
    $buf = $y*10000+$m*100+$d;

    if ($buf &lt;= 19120729) {
        printf("明治年%d月%d日", $m, $d);
             
    } elseif (19120730 &lt;= $buf &amp;&amp; $buf &lt;= 19261224) {
        printf("大正年%d月%d日", $m, $d);
        
    } elseif (19261225 &lt;= $buf &amp;&amp; $buf &lt;= 19890107) {
        printf("昭和年%d月%d日", $m, $d);
    
    } elseif(19890108 &lt;= $buf &amp;&amp; $buf &lt;= 20190430) {
        printf("平成年%d月%d日", $m, $d);
        
    } elseif(20190501 &lt;= $buf) {
        printf("令和年%d月%d日", $m, $d);
    }
?&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/34-01-02-02.png" alt="" class="wp-image-6423"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/34-dateset-01-02-00579/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【DPメニュー】【部分和】部分和問題 4 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/18-dp_primer-06-04-00574/</link>
					<comments>https://chokomon.com/18-dp_primer-06-04-00574/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Tue, 16 Aug 2022 18:33:48 +0000</pubDate>
				<category><![CDATA[DPメニュー]]></category>
		<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6379</guid>

					<description><![CDATA[【DPメニュー】> FINAL問題【部分和】部分和問題 4 (paizaランク B 相当) [難易度: 1791 ±22] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/18-dp_primer/">DPメニュー</a>】> <a href="https://paiza.jp/works/mondai/dp_primer/dp_primer_partial_sums_boss" target="_blank" rel="noreferrer noopener">FINAL問題【部分和】部分和問題 4 (paizaランク B 相当)</a> [難易度: <strong>1791 ±22</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/18-06-04-01.png" alt="" class="wp-image-6380"/></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>1 ~ n の番号がついた n 種類のおもりがあり、おもり i の重さは a_i です。それぞれのおもりは無限個存在しており、任意のおもりを任意の個数使うことができます。</p>



<p>このとき、おもりを選んで重さの和を x となるようにすることができるかどうか判定してください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>5 10<br>9<br>3<br>4<br>11<br>8</p>



<p><strong>出力値（例）</strong><br>yes</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($n, $x) = explode(" ", trim(fgets(STDIN)));
    
    for ($i = 0; $i &lt; $n; $i++) {
        $a[$i] = trim(fgets(STDIN));
    }

    $dp[0] = true;
    
    for ($i = 1; $i &lt;= $x; $i++) {
        $dp[$i] = false;
    }
    
    for($i = 0; $i &lt; $n; $i++){
        for($j = $a[$i]; $j &lt; $x+1; $j++){
            if($dp[$j-$a[$i]]) {
                $dp[$j] = true;
            }
        }
    }
    //print_r($dp);

    echo ($dp[$x]) ? "yes" : "no";
?&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/18-06-04-02.png" alt="" class="wp-image-6382"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/18-dp_primer-06-04-00574/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【DPメニュー】最長増加連続部分列 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/18-dp_primer-04-01-00567/</link>
					<comments>https://chokomon.com/18-dp_primer-04-01-00567/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Sun, 14 Aug 2022 18:36:54 +0000</pubDate>
				<category><![CDATA[DPメニュー]]></category>
		<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6322</guid>

					<description><![CDATA[【DPメニュー】> 【連続列】STEP: 1 最長増加連続部分列 (paizaランク B 相当) [難易度: 1721 ±21] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/18-dp_primer/">DPメニュー</a>】> <a href="https://paiza.jp/works/mondai/dp_primer/dp_primer_lis_continuous_step0" target="_blank" rel="noreferrer noopener">【連続列】STEP: 1 最長増加連続部分列 (paizaランク B 相当)</a> [難易度: <strong>1721 ±21</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/18-04-01-01.png" alt="" class="wp-image-6323"/></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>n 人が横一列に並んでいます。左から i 番目の人を人 i と呼ぶことにします。人 i の身長は a_i [cm]です。<br>人 l ,人 l+1, ... , 人 r からなる区間 [l, r] について、すべての l ≦ i &lt; r に対して a_i ≦ a_{i+1} が成り立っているとき、区間 [l, r] は背の順であると呼ぶことにします。また、区間 [l, r] の長さを r-l+1 とします。<br>背の順であるような区間のうち、最長であるものの長さを出力してください。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">(ヒント)</h3>



<p>元の問題を解くために、部分問題としてどのような問題を考えればよいでしょうか。</p>



<p>dp[n] を、人 n が右端となっているような背の順区間のうち、最長であるような区間の長さとしてみましょう。dp[1] ~ dp[k-1] が既に求まっているとして、dp[k] がどうなるかを考えてみましょう。dp[k-1] に注目すると、dp[k-1] は人 k-1 を右端とする背の順区間の長さですから、もし a_{k-1} ≦ a_k なら、その区間の右端に人 k をくっつけることで新しく長さ dp[k-1]+1 の背の順区間を作ることができ、この区間の長さは人 k を右端として持つ背の順区間のうち最長であることがわかります。逆に、もし a_{k-1} ＞ a_k なら、人 k が右端となるような背の順区間は人 k のみからなる長さ1の区間しか存在しないことがわかります。</p>



<p>以上の考察により、dp[k-1] と dp[k] の関係が明らかになりました。自信のある人は自分で漸化式を立ててみましょう。以下の疑似コードに従って、自分の得意な言語で実装してみましょう。</p>



<p class="has-gray-background-color has-background">dp[1] &lt;- 1 for i = 2 to n<br>     if a[i-1] &lt;= a[i] then<br>         dp[i] &lt;- dp[i-1]+1<br>     else<br>         dp[i] &lt;- 1<br> print max({dp[1], ... ,dp[n]})</p>



<p></p>



<p></p>



<p><strong>入力値（例）</strong><br>5<br>160<br>178<br>170<br>190<br>190</p>



<p><strong>出力値（例）</strong><br>3</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));
    
    $a = array();
    
    for ($i = 0; $i &lt; $n; $i++) {
        $a[] = trim(fgets(STDIN));
    }
    
    $dp = array();
    $dp[0] = 1;
    
    for ($i = 1; $i &lt; $n; $i++) {
        
        if ($a[$i-1] &lt;= $a[$i]) {
            $dp[$i] = $dp[$i-1] + 1;
            
        } else {
            $dp[$i] = 1;
        }
    }
    
    echo max($dp);
?&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/18-04-01-02.png" alt="" class="wp-image-6325"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/18-dp_primer-04-01-00567/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【DPメニュー】最安値を達成するには 3 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/18-dp_primer-03-03-00565/</link>
					<comments>https://chokomon.com/18-dp_primer-03-03-00565/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Sun, 14 Aug 2022 16:56:22 +0000</pubDate>
				<category><![CDATA[DPメニュー]]></category>
		<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6309</guid>

					<description><![CDATA[【DPメニュー】> 【最安値】STEP: 3 最安値を達成するには 3 (paizaランク B 相当) [難易度: 1717 ±20] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/18-dp_primer/">DPメニュー</a>】> <a href="https://paiza.jp/works/mondai/dp_primer/dp_primer_apples_step2" target="_blank" rel="noreferrer noopener">【最安値】STEP: 3 最安値を達成するには 3 (paizaランク B 相当)</a> [難易度: <strong>1717 ±20</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/18-03-03-01.png" alt="" class="wp-image-6310"/></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>八百屋にて、りんご x 個が a 円で、りんご y 個が b 円で売られています。</p>



<p>りんごの買い方を工夫したとき、最終的に n 個のりんごを手に入れるために必要な金額の最小値はいくらでしょうか。なお、買い方を工夫した結果、買ったりんごが n+1 個以上になってもよいものとします。</p>



<p></p>



<p><strong>入力値（例）</strong><br>4 2 110 5 200</p>



<p><strong>出力値（例）</strong><br>200</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($n, $x, $a, $y, $b) = explode(" ", trim(fgets(STDIN)));
    
    $dp[0] = 0;
    
    for ($i = 1; $i &lt;= ($n + $y); $i++) {
        $dp_a = $i &gt; $x ? $dp[$i - $x] + $a : $a;
        $dp_b = $i &gt; $y ? $dp[$i - $y] + $b : $b;
        
        $dp[$i] = min($dp_a, $dp_b);
    }
    
    echo $dp[$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/18-03-03-02.png" alt="" class="wp-image-6311"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/18-dp_primer-03-03-00565/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【DPメニュー】階段の上り方 2 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/18-dp_primer-02-02-00561/</link>
					<comments>https://chokomon.com/18-dp_primer-02-02-00561/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Sat, 13 Aug 2022 13:00:49 +0000</pubDate>
				<category><![CDATA[DPメニュー]]></category>
		<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1700]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6287</guid>

					<description><![CDATA[【DPメニュー】> 【階段の上り方】STEP: 2 階段の上り方 2 (paizaランク B 相当) [難易度: 1742 ±17] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/18-dp_primer/">DPメニュー</a>】> <a href="https://paiza.jp/works/mondai/dp_primer/dp_primer_stairs_step1" target="_blank" rel="noreferrer noopener">【階段の上り方】STEP: 2 階段の上り方 2 (paizaランク B 相当)</a> [難易度: <strong>1742 ±17</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/18-02-02-01.png" alt="" class="wp-image-6288"/></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>整数 n, a, b が与えられます。<br>階段を上るのに、1歩で a 段または b 段を上ることができるとき、n 段の階段を上る方法は何通りあるでしょうか。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">(ヒント)</h3>



<p>前問とやることは同じです。ただ、n, a, b の値によっては答えが0になることがあるので注意しましょう。例えば、n = 4, a = 3, b = 5 のとき、答えは0です。(1歩で3段か5段上ることができるとき、ちょうど4段の階段を上る方法は存在しない)</p>



<p></p>



<p><strong>入力値（例）</strong><br>11 3 4</p>



<p><strong>出力値（例）</strong><br>3</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($n, $a, $b) = explode(" ", trim(fgets(STDIN)));
    
    $dp[0] = 1;
    
    for ($i = 1; $i &lt;= $n; $i++) {
        $dp[$i] = 0;
        
        if ($i &gt;= $a) {
            $dp[$i] = $dp[$i] + $dp[$i - $a];
        }
        if ($i &gt;= $b) {
            $dp[$i] = $dp[$i] + $dp[$i - $b];
        }
    }
    
    echo $dp[$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/18-02-02-02.png" alt="" class="wp-image-6289"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/18-dp_primer-02-02-00561/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
