- プログラミングのお題スレ Part7 [転載禁止]©2ch.net
833 :デフォルトの名無しさん[sage]:2015/09/21(月) 03:09:20.39 ID:TV+aglfl - >>814
愚直に日本語 0. s=0とする 1.n=0 2. nを10進数であらわしたときに含まれる1の数 を数えそれをdとおく 3. k=0,...9として 4. k=1のときはd+1,それ以外をsに足しn+kに一致したら 出力して終了 5. 3のループを継続 6. n=n+10として1.へ 2.の処理の詳細 d=0;m=n;while(m){ d=(m % 10==1)?1:0; m/=10;} 愚直で効率が悪いのでCで書いても100m秒もかかって しまった。
| - プログラミングのお題スレ Part7 [転載禁止]©2ch.net
834 :訂正[sage]:2015/09/21(月) 03:10:53.01 ID:TV+aglfl - 4.k=1のときはd+1,それ以外はdをsに足し、sがn+kに一致したら
出力して終了(n+k<2の場合は継続)
| - プログラミングのお題スレ Part7 [転載禁止]©2ch.net
835 :またもや訂正(スマンコ)[sage]:2015/09/21(月) 03:12:02.29 ID:TV+aglfl - 6. n=n+10として2.へ
| - プログラミングのお題スレ Part7 [転載禁止]©2ch.net
840 :デフォルトの名無しさん[sage]:2015/09/21(月) 11:47:33.16 ID:TV+aglfl - C語で書き直し
[?]には整数型変数名を入れてください #include <stdio.h> static int odai814(void){ int [?]=0,[?]=0,[?],[?],[?];for(;;[?]+=10){[?]=[?],[?]=0; while([?])[?]+=(([?]%10)==1)?1:0,[?]/=10; for([?]=0;[?]<10;[?]++)if(([?]+=([?]==1)?[?]+1: [?])==[?]+[?])if([?]+[?]>1) return [?]+[?];}} int main(void) {printf("%d\n",odai814());return 0;}
| - プログラミングのお題スレ Part7 [転載禁止]©2ch.net
847 :デフォルトの名無しさん[sage]:2015/09/21(月) 23:29:01.05 ID:TV+aglfl - あ
|
|