<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>c++  |  AboeBlog</title>
	<atom:link href="https://aboeblog.com/tag/cpp/feed/" rel="self" type="application/rss+xml" />
	<link>https://aboeblog.com</link>
	<description>全日本人プログラミング可能計画</description>
	<lastBuildDate>Tue, 27 Oct 2020 14:08:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.8</generator>
	<atom:link rel='hub' href='https://aboeblog.com/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">139919897</site>	<item>
		<title>c++をつかって123456789に+,-をいれて100にする方法[小町算]</title>
		<link>https://aboeblog.com/program/%e5%b0%8f%e7%94%ba%e7%ae%97/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25b0%258f%25e7%2594%25ba%25e7%25ae%2597</link>
					<comments>https://aboeblog.com/program/%e5%b0%8f%e7%94%ba%e7%ae%97/#respond</comments>
		
		<dc:creator><![CDATA[aboeuser]]></dc:creator>
		<pubDate>Mon, 18 Dec 2017 05:24:11 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[c++]]></category>
		<guid isPermaLink="false">https://aboeblog.com/?p=163</guid>

					<description><![CDATA[おはようございます。フジワラです。 今日は、123456789の数字の間に+,-をいれて、計算結果が100になるようにするプログラムをc++で書いてみようと思います。 具体例としては、 123+45-678+9 みたいな [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>おはようございます。フジワラです。</p>
<p>今日は、123456789の数字の間に+,-をいれて、計算結果が100になるようにするプログラムをc++で書いてみようと思います。</p>
<p>具体例としては、</p>
<p>123+45-678+9</p>
<p>みたいな形です。</p>
<p>いわゆる、小町算というやつです。小町数と混同しないでください</p>
<p>&nbsp;</p>
<p>今回は、×、÷、数字の並べ替えは考えないでやりたいと思います。</p>

  <div id="toc" class="toc tnt-number toc-center border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">考え方</a></li><li><a href="#toc2" tabindex="0">とりあえず、コード</a></li><li><a href="#toc3" tabindex="0">コードの解説</a></li><li><a href="#toc4" tabindex="0">実行結果</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">考え方</span></h2>
<p>123456789の間に+,-を入れるか入れないということは、それぞれの数字の間に3通りの状態(+,-もしくはどちらもいれない)があることになります。</p>
<p>つまり、123456789の間に+,-を入れる方法は、\(3^8\)通りあるということになります。</p>
<p>で、これを3進数8桁で表します。(0の時は間に何も入れない、1の時は間に+を入れる、2の時は間に-を入れる処理として考えます。)</p>
<h2><span id="toc2">とりあえず、コード</span></h2>
<pre class="brush: cpp; title: ; notranslate">&lt;/pre&gt;
#include&lt;iostream&gt;
#include&lt;math.h&gt;
using namespace std;

void plus3(int* a, int n){

a[n]=a[n]+1;

if(a[n]==3){
a[n]=a[n]%3;

plus3(a, n+1);
}

}

int main(void){

int a[9]={0};

int komati[9]={1,2,3,4,5,6,7,8,9};
int buf[10]={0};

while(1){
int x=0;

int n=0;
int y=0;

for(int i=0;i&lt;10;i++){
buf[i]=0;
};

plus3(a, 0);

buf[0]=komati[0];

if(a[8]==1){
break;
}

for(int i=0;i&lt;=7;i++){
if(a[i]==0){
buf[n]=buf[n]*10+komati[x+1];
x=x+1;
}else{
n=n+1;
buf[n]=komati[x+1];
x=x+1;
}
if(x==8){
break;
}

}

y=buf[0];

n=0;
for(int i=0;i&lt;=7;i++){
if(a[i]==1){
y=y+buf[n+1];
n=n+1;
}else if(a[i]==2){
y=y-buf[n+1];
n=n+1;

}
}

if(y==100){
cout&lt;&lt;&quot;komatisuuha &quot;&lt;&lt;1;
for(int i=0;i&lt;=7;i++){
if(a[i]==0){
cout&lt;&lt;i+2;
}
else if(a[i]==1){
cout&lt;&lt;&quot;+&quot;;
cout&lt;&lt;i+2;

}else if(a[i]==2){
cout&lt;&lt;&quot;-&quot;;
cout&lt;&lt;i+2;
}

}cout&lt;&lt;endl;

}

}

return 0;
}
&lt;pre&gt; </pre>
<p>&nbsp;</p>
<h2><span id="toc3">コードの解説</span></h2>
<p>まず、main関数内でint型の配列のa[9]とkomati[9]とbuf[10]を宣言しています。</p>
<p>a[9]は「+,-,何も入れない」の123456789の間の+-の有無の状態を表す3進数8桁を表すものです。一番最初の状態が{0,0,0,0,0,0,0,0,0}で1を足し続けた最終の状態は{2,2,2,2,2,2,2,2,2}です。</p>
<p>komati[9]は、それぞれに{1,2,3,4,5,6,7,8,9}をぶち込んで、123456789を表しています。</p>
<p>buf[10]は、例えば、123+45-6-789としたときに、配列bufにそれぞれ、123、45、6、789をぶち込んで後で計算するために使うものです。</p>
<hr />
<p>void plus3関数は、3進数の数字に、1を足す処理をするための関数で、第一引数に、1を足したい3進数、第二引数に、1を足す場所(3進数の計算で繰り上がりの処理のためにつけてるだけです。他にもいい方法があると思います。)</p>
<p>一回この関数を呼び出すと、引数として与えられた3進数に1を足した結果を新たに、引数として与えられた3進数を上書きします。つまり、与えた3進数に1を足した結果が得られるものです。</p>
<p>&nbsp;</p>
<p>余談：plusで関数を定義すると、c++の標準の関数にもplusがあるので、オーバーロードしないと使えません.</p>
<p>&nbsp;</p>
<hr />
<p>今回は、3進数8桁で+,-の組み合わせを考えているので、8桁目が繰り上がって9桁めが1になったら、\(3^8\)通りの組み合わせはすべて出ていることになるので終了します。</p>
<pre class="brush: cpp; title: ; notranslate">

if(a[8]==1){ break; }

</pre>
<p>while内の処理</p>
<p>&nbsp;</p>
<pre class="brush: cpp; title: ; notranslate">

while(1){
int x=0;

int n=0;
int y=0;

for(int i=0;i&lt;10;i++){
buf[i]=0;    //bufの初期化
};

plus3(a, 0);　　　//3進数に1を足す処理

buf[0]=komati[0];

if(a[8]==1){
break;
}

//bufにそれぞれの値を代入する

for(int i=0;i&lt;=7;i++){
if(a[i]==0){  //+-を間に入れないときは隣り合う数字を結合する
buf[n]=buf[n]*10+komati[x+1];
x=x+1;
}else{
n=n+1;
buf[n]=komati[x+1];
x=x+1;
}
if(x==8){//komatiの最後の項9まで行ったら処理終了
break;
}

}

y=buf[0];

//buf同士の計算
n=0;
for(int i=0;i&lt;=7;i++){
if(a[i]==1){
y=y+buf[n+1];
n=n+1;
}else if(a[i]==2){
y=y-buf[n+1];
n=n+1;

}
}

if(y==100){//結果が100となるときに表示
cout&lt;&lt;&quot;komatisuuha &quot;&lt;&lt;1;
for(int i=0;i&lt;=7;i++){
if(a[i]==0){
cout&lt;&lt;i+2;
}
else if(a[i]==1){
cout&lt;&lt;&quot;+&quot;;
cout&lt;&lt;i+2;

}else if(a[i]==2){
cout&lt;&lt;&quot;-&quot;;
cout&lt;&lt;i+2;
}

}cout&lt;&lt;endl;

}

}

</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span id="toc4">実行結果</span></h2>
<p>実行結果は、</p>
<p>komatisuuha 123-45-67+89<br />
komatisuuha 12-3-4+5-6+7+89<br />
komatisuuha 12+3+4+5-6-7+89<br />
komatisuuha 123+4-5+67-89<br />
komatisuuha 1+2+3-4+5+6+78+9<br />
komatisuuha 12+3-4+5+67+8+9<br />
komatisuuha 1+23-4+56+7+8+9<br />
komatisuuha 1+2+34-5+67-8+9<br />
komatisuuha 1+23-4+5+6+78-9<br />
komatisuuha 123+45-67+8-9<br />
komatisuuha 123-4-5-6-7+8-9</p>
<p>&nbsp;</p>
<p>となります。確かに全部100になってますね。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aboeblog.com/program/%e5%b0%8f%e7%94%ba%e7%ae%97/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">163</post-id>	</item>
		<item>
		<title>c++で標準入出力cout、cinが使えないときの対処法</title>
		<link>https://aboeblog.com/program/c%e3%81%a7%e6%a8%99%e6%ba%96%e5%85%a5%e5%87%ba%e5%8a%9bcout%e3%80%81cin%e3%81%8c%e4%bd%bf%e3%81%88%e3%81%aa%e3%81%84%e3%81%a8%e3%81%8d%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=c%25e3%2581%25a7%25e6%25a8%2599%25e6%25ba%2596%25e5%2585%25a5%25e5%2587%25ba%25e5%258a%259bcout%25e3%2580%2581cin%25e3%2581%258c%25e4%25bd%25bf%25e3%2581%2588%25e3%2581%25aa%25e3%2581%2584%25e3%2581%25a8%25e3%2581%258d%25e3%2581%25ae%25e5%25af%25be%25e5%2587%25a6%25e6%25b3%2595</link>
					<comments>https://aboeblog.com/program/c%e3%81%a7%e6%a8%99%e6%ba%96%e5%85%a5%e5%87%ba%e5%8a%9bcout%e3%80%81cin%e3%81%8c%e4%bd%bf%e3%81%88%e3%81%aa%e3%81%84%e3%81%a8%e3%81%8d%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[aboeuser]]></dc:creator>
		<pubDate>Tue, 12 Dec 2017 06:33:30 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[c++]]></category>
		<guid isPermaLink="false">http://aboeblog.com/?p=61</guid>

					<description><![CDATA[&#160; どうも、こんにちは、最近意識高い系に高頻度で遭遇するフジワラです。 &#160; 今日は、c++でcout、cin が使えないときの解決法です！ 注意:環境変数をいじったりとかする難しいのじゃなくて、基本中 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>どうも、こんにちは、最近意識高い系に高頻度で遭遇するフジワラです。</p>
<p>&nbsp;</p>
<p>今日は、c++でcout、cin が使えないときの解決法です！</p>
<p><span style="background-color: #ffffff; font-size: 20px;"><span class="red">注意:環境変数をいじったりとかする難しいのじゃなくて、基本中の基本です。</span></span></p>
<p><span class="red" style="background-color: #ffffff; font-size: 20px;">環境変数うんぬんを求めてる人は、ブラウザをそっと閉じてください&#8230;</span></p>
<p>&nbsp;</p>
<p>さあ、どう解決するかっていうと、</p>
<p>ソースコードの一番上見てください&#8230;.</p>
<p>&nbsp;</p>
<p><span style="font-size: 18px;"><strong>#include&lt;iostream&gt;　</strong><span style="font-size: 16px;">忘れてませんか？？</span></span></p>
<p>書いてるわ、ボケェ！！って方の場合は手に負えません。</p>
<p>悪しからず。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aboeblog.com/program/c%e3%81%a7%e6%a8%99%e6%ba%96%e5%85%a5%e5%87%ba%e5%8a%9bcout%e3%80%81cin%e3%81%8c%e4%bd%bf%e3%81%88%e3%81%aa%e3%81%84%e3%81%a8%e3%81%8d%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61</post-id>	</item>
	</channel>
</rss>
