【モリタポ有償】C/C++の問題を片付けます(2)at TECH
【モリタポ有償】C/C++の問題を片付けます(2) - 暇つぶし2ch650:デフォルトの名無しさん
11/04/28 17:50:31.93
>>649
>>582

651:デフォルトの名無しさん
11/04/28 17:53:17.40
◆QZaw55cn4cは理解力・思考力が底辺レベルなのにプライドばっかりムダに高い

既知の問題に既知の答えをコピペするぐらいならできるけど、
ちょっとアレンジしてある問題だと内容をまず誤読して、
それから頭の悪いゴミコードを書く

652:デフォルトの名無しさん
11/04/28 18:09:19.22
>>649==◆QZaw55cn4c

>>651
しかも必要の無いところにわざわざ二分木のデータ構造を持ち込んだり
いかにも「俺は人とは違うんだぞ」と言いたげだよな
その割には全然内容が伴ってないけどなw

653:デフォルトの名無しさん
11/04/28 19:15:45.11
◆QZaw55cn4cは糞なのか

654:デフォルトの名無しさん
11/04/28 19:20:37.95
あげておこう

655:デフォルトの名無しさん
11/04/28 19:30:26.82
おまいら、あんまり追い討ちかけてやんなw
2ちゃん妖怪、自演粘着オバケに化けて出られても困るぞ。

656:デフォルトの名無しさん
11/04/28 20:05:29.36
面白いねー

657:デフォルトの名無しさん
11/04/28 20:39:47.60
>>655
いや俺らが追い打ちを掛けなくてもこいつは元々超粘着気質なので
いずれ荒らしになるか他のスレで人のアラ探しばかりするか、どちらに
しろ無職で時間だけはたっぷりあるだろうからロクな事はしないだろ

658:デフォルトの名無しさん
11/04/28 20:52:12.60
人の課題を勝手に解いてこのスレに誘導し続けるんじゃね
解いてっていうか解けてないけど

659:デフォルトの名無しさん
11/04/28 21:16:52.78
>>658
でもこいつ削除依頼出したぜ?やっぱり頭がおかしいよなww

660:デフォルトの名無しさん
11/04/28 21:24:38.89
てかトリップ外して逃亡は危険サイン
ネオ麦とかの件も昔あったし
コードは上げなくてもいいから暫くは
トリップ外さず定期的にカキコした
ほうがいいんでね?

661:デフォルトの名無しさん
11/04/28 21:57:20.65
>>601のとおりだが、この状態だとコテがスレを占有してるとはいいがたい状況だよなぁ。

662:デフォルトの名無しさん
11/04/28 22:06:18.05
傍観者気取ってんじゃねーよ

663:デフォルトの名無しさん
11/04/28 22:10:20.94
自分に対する批判を「うざい」と言い、さらにスレ占有の罪を逃れようとする
◆QZaw55cn4cはなかなか小賢しい奴だな

664:デフォルトの名無しさん
11/04/28 22:22:24.48
ああ、俺がQZだと思ってるのか。乙乙。
ID出ればいいのにね。粘着してる方が困るかもしれないけど。

665:デフォルトの名無しさん
11/04/28 22:24:47.07
ほんと小姑みたいな奴が多いのがプログラマとかSE

666:デフォルトの名無しさん
11/04/28 23:01:25.62
>>665
いや、◆QZaw55cn4cはプログラマでもSEでもない、無職中年ニートだから
しかも重度の自己愛性人格障害
人にすごく嫌われているという事実がどうしても認知出来ない、自己評価が
異様に高い割には知能が劣るなど、観察するといろいろ面白いがw

>>660
切れて八つ当たりか
本当に救いようがない奴だよな

667:デフォルトの名無しさん
11/04/28 23:01:33.20
今日も一日一◆QZaw55cn4c

668:デフォルトの名無しさん
11/04/28 23:36:17.69
>>666
QZ本人なのか、QZが好きでたまらないのか、すごいよね。

669:デフォルトの名無しさん
11/04/28 23:37:49.74
>>668
◆QZaw55cn4cはものすごくプライドが高いから自分の事を

>いや、◆QZaw55cn4cはプログラマでもSEでもない、無職中年ニートだから
>しかも重度の自己愛性人格障害
>人にすごく嫌われているという事実がどうしても認知出来ない、自己評価が
>異様に高い割には知能が劣るなど、観察するといろいろ面白いがw

などと「本当の姿」を認められるわけがないってw

670:デフォルトの名無しさん
11/04/28 23:40:06.60
>>669
じゃあ好きでたまらない方か。いつもおつかれさん。

671:デフォルトの名無しさん
11/04/28 23:43:44.28
>>670
「好き」でも「嫌い」でもない
「頭のおかしい人の観察対象」として興味深いだけ

672:デフォルトの名無しさん
11/04/29 04:44:11.41
>>516
和を再利用して、計算回数減らしてみた
篩のところの時間が大部分だから、ほとんど効果ないのがビミョー
#include <stdio.h>
#include <stdlib.h>
#define N 1000000

int main(void)
{
char sieve[N] = {0, 0, 1};
int i, j, k, head, tail, Ans, length, sum, tail_indx, sum_t;
int *prime, prime_cnt, prime_max;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;
for(i = prime_cnt = 0; i < N; i++) if(sieve[i]) prime_cnt++;
prime = malloc(prime_cnt * sizeof(int));
for(i = j = 0; i < N; i++) if(sieve[i]) prime[j++] = i;
prime_max = prime[prime_cnt - 1];

Ans = head = tail = sum = 2, length = 1, tail_indx = 0;
for(i = 1, sum = 2; (sum += prime[i]) <= prime_max; i++) if(sieve[sum]) Ans = sum, tail = prime[tail_indx = i], length = i + 1;
sum = Ans;
for(i = 1; (sum += (prime[++tail_indx] - prime[i - 1])) <= prime_max; i++)
for(j = tail_indx + 1, k = length + 1, sum_t = sum; (sum_t += prime[j]) <= prime_max; j++, k++)
if(sieve[sum_t]) Ans = sum = sum_t, head = prime[i], tail = prime[tail_indx = j], length = k;
printf("%d : %d to %d, %d\n", Ans, head, tail, length);
free(prime);

return 0;
}


673:デフォルトの名無しさん
11/04/29 09:33:26.61
>>518 の間違いです。
にしても、{と}付けてほしい。

674:673
11/04/30 03:24:25.47
スレリンク(tech板:136番)

675:デフォルトの名無しさん
11/04/30 13:20:05.84
>>660
ご安心下さい。
スレリンク(tech板:210番)
このスレに誘導することは、もはやありませんが、今日も一本書いてみました。
スレリンク(tech板:570番)


676:デフォルトの名無しさん
11/04/30 13:44:26.15
◆QZaw55cn4cは糞

677:デフォルトの名無しさん
11/04/30 15:17:10.47
まったくだ

678:デフォルトの名無しさん
11/04/30 19:40:48.02
2chで金儲けっていいの?

679:673
11/05/01 10:37:31.41
136
それはどんな計算式を使うんですか?
計算機でも分かる仕様書を書いて持って来い。<--と、モリタポ

680:デフォルトの名無しさん
11/05/01 23:54:42.25
糞スレ

681:デフォルトの名無しさん
11/05/02 06:59:09.86
>>641
10倍どころじゃねえしwww 100倍早いとか速すぎワロタwww
そして涙目の◆QZaw55cn4cである。あれ?息してない?www

682:デフォルトの名無しさん
11/05/02 08:56:55.28
>>681
◆QZaw55cn4cはプライドを粉々に打ち砕かれて遁走しましたw

683: ◆XEE2zLj0dE
11/05/02 09:48:15.38
スレも削除されないみたいだし、終わった宿題をぐだぐだ続けるスレとして再利用してはどうだろう。

スレリンク(tech板:626番)
パラメータわざわざこっちにあわせてくれてありがとう。

これはこちらの環境では逆順出力時にSIGSEGVだったよ。
desc指定がわかりにくかっただろうか。

684:デフォルトの名無しさん
11/05/02 10:02:11.70
空いてる便所の再利用か

685:デフォルトの名無しさん
11/05/02 11:45:24.99
なもんで、ぐだぐだ続く場合はこっちでいいのかな。

スレリンク(tech板:629番)
落ちなくなったし速度も速いね。

686:デフォルトの名無しさん
11/05/02 21:22:07.61
問題1
スレリンク(tech板:495番)
問題2
スレリンク(tech板:134番)

687:デフォルトの名無しさん
11/05/02 23:19:56.28
>>686 問題1
URLリンク(ideone.com)

問題2は固い頭では全然わかりませんし、またわかりませんでした。

688:デフォルトの名無しさん
11/05/03 14:07:00.66


689:デフォルトの名無しさん
11/05/06 03:36:19.84
/* スレリンク(tech板:393-494番)n */
int main(){
  int array[10][10];
  /*配列に対して何かしらの処理*/

  /*配列に0が含まれるかチェック*/
  int i, j;
  for (i=0;i<10;i++) {
    for (j=0;j<10;j++) {
      if (array[i][j]==0) break;
    }
    if(j != 10) break;
  }
  if(i==10 && j==10)
    /*含まれていない場合の処理*/
    printf("0は含ませません");
  else
    /*含まれていた場合の処理*/
    printf("0が含まれています");
  return 0;
}

690:デフォルトの名無しさん
11/05/06 03:43:07.75
>if(i==10 && j==10)

691:デフォルトの名無しさん
11/05/06 03:56:43.58
>>689
で?別関数にしてreturnすればいい話なんだが

692:デフォルトの名無しさん
11/05/06 04:05:48.43
スレ違い

693:デフォルトの名無しさん
11/05/06 04:08:50.99
>>689
含ませてくださいよ

>>690



694:デフォルトの名無しさん
11/05/06 04:14:40.76
◆QZaw55cn4cは糞だよなぁ

695:デフォルトの名無しさん
11/05/06 23:17:51.99
まさに糞スレ

696:デフォルトの名無しさん
11/05/07 01:58:54.06
うんこみたいなスレですね

697:デフォルトの名無しさん
11/05/07 02:16:59.40
◆QZaw55cn4cがうんこみたいなもんだからな

698:デフォルトの名無しさん
11/05/07 11:43:07.60
だな
◆QZaw55cn4c==排泄物
臭いだけで役に立たない

699:デフォルトの名無しさん
11/05/07 17:13:35.13
この人、あれからも性懲りもなく別の問題をといているみたい。
スレリンク(tech板:668番)
理解不能。

700:デフォルトの名無しさん
11/05/07 18:52:19.65
まじ糞だな

701:デフォルトの名無しさん
11/05/07 22:59:54.89
無職だから暇で暇でしょうがないんだろうな
金もなくて買い物も出来なくて

702:デフォルトの名無しさん
11/05/07 23:00:49.64
最近は正体隠して糞コードを流布してるのか

703:デフォルトの名無しさん
11/05/07 23:03:40.28
いまいち隠し切れていないところに、煩悩が見え隠れしている。

704:デフォルトの名無しさん
11/05/08 13:47:52.43
コンビニでも何でもいいから働けよ◆QZaw55cn4c
ハッキリ言ってやるけど、おまえの知能じゃ職業プログラマーなんて無理だっての…
いいかげん気づけ? プログラムは趣味にしとけば?

705:デフォルトの名無しさん
11/05/08 15:50:52.00
>>704
それが無理だから中年ニートを続けてるんじゃないかなあ?
自己愛性人格障害は「自分はこんな所で収まるタマじゃないぞ、すごいんだぞ」
という修正不能な異常に高いプライドを持っているので、コンピニで働く事は
まず考えられないですね

706:デフォルトの名無しさん
11/05/08 15:52:12.35
知能の低い者に言われても説得力がないと思うが。

707:デフォルトの名無しさん
11/05/08 16:46:55.35
◆QZaw55cn4cの知能が低くてPGに不向きなのは今まで投稿されたコードを見ても明らかなんだが

708: ◆QZaw55cn4c
11/05/08 17:19:40.56
コメントしておきます。

>>705
「修正不能な異常に高いプライドを持っている」という意識は全くありません。ただのアマチュアですし。
しかしあなたからは、そう見えるようですね。どんなところから、プライドが高いと感じたか教えていただけませんでしょうか。

>>707
>今まで投稿されたコードを見ても明らかなんだが
ほう、具体的に例をあげて説明いただけませんでしょうか。

709:デフォルトの名無しさん
11/05/08 17:23:22.63
他人の指摘を素直に受け入れない点
自分が間違っててもとりあえず何か言い返す
もしかしたら、自分の間違いが理解できないくらいの低脳って可能性もあるが

710:デフォルトの名無しさん
11/05/08 17:41:50.08
>>709
>他人の指摘を素直に受け入れない点
おかしいですね。間違いがあれば修正版を作成するなり、ごめんなさい宣言を出すなり、率直に反応しているつもりですが。
このスレ(前スレでもいいですが)で、そのような私のレスがあれば例示していただけないでしょうか。

>自分が間違っててもとりあえず何か言い返す
それは、自分の間違いに気づいていないか、あるいは間違いだとは認識していないのでしょうね。
いずれにしても説得力が足りないのでは?

>もしかしたら、自分の間違いが理解できないくらいの低脳って可能性もあるが
低能でなくとも自分の間違いには気づきにくいものです、あなたのように。

711:デフォルトの名無しさん
11/05/08 17:46:28.31
まさに言ったとおりのレスw

712:デフォルトの名無しさん
11/05/08 17:49:17.29
>>599以降のやりとりを見れば、説得力が足りないんじゃなくて ◆QZaw55cn4cの頭が悪すぎるのは一目瞭然

713:デフォルトの名無しさん
11/05/08 17:52:49.62
>>708
>しかしあなたからは、そう見えるようですね。どんなところから、プライドが高いと感じたか教えていただけませんでしょうか。

お断りします。どうせ言ったって馬耳東風か、屁理屈で返すんでしょ。
こちらも不愉快な想いはしたくないもんでね。自分で考えろカス。

>ほう、具体的に例をあげて説明いただけませんでしょうか。

えっマジで言ってんのそれ?あんたが書いたコードより遙かに性能がいいコードを
他の人がいくつも投稿したのをまさか見てないと言い逃れしないよね?
いつまでも糞みたいな二分木にこだわって、頭が硬化してきているのは明らか。
やっぱPG35才定年説は正しい。

714:デフォルトの名無しさん
11/05/08 17:55:33.51
前に指摘したら、そんな昔のことは覚えてないとか抜かしやがったからなw

715:デフォルトの名無しさん
11/05/08 18:04:59.09
低能じゃあ◆QZaw55cn4cの馬鹿さ加減を表現し切れないと思って、あえて低脳って言葉にしたんだがw
◆QZaw55cn4cは揚げ足とれたとか思って大喜びみたいだけど

716:デフォルトの名無しさん
11/05/08 18:07:22.24
>>713
>えっマジで言ってんのそれ?あんたが書いたコードより遙かに性能がいいコードを
>他の人がいくつも投稿したのをまさか見てないと言い逃れしないよね?

あのう、私は自分のコードが最善だとも最高だともいっておらず、
ただ「参考になる」としか述べていません。
それどころか、考え方のちがう別実装に喜んでいたりしていたのですが。(あとベンチを取ってくれる人もおられました。)
スレリンク(tech板:611番)

>いつまでも糞みたいな二分木にこだわって、頭が硬化してきているのは明らか。
こだわっているのではなくて、自分のコードに重大な欠点
スレリンク(tech板:612番)
があることを認識したので、自分が書いた以上、とりあえずの修正を行ったまでのことです。
ニ分木にこだわっていたわけではありませんよ。

717:デフォルトの名無しさん
11/05/08 18:14:21.59
>>712
たしかにこれは私の認識に問題があった例ですね。固いといわれても仕方がない。
しかし、問題の部分が理解できなくとも、その部分の全体に対する影響度を調べた (>>592) 上で
判断しましたから、これ以上は求めてもしかたがないでしょう。

718:デフォルトの名無しさん
11/05/08 18:18:53.14
頭が悪いを、固いに摩り替えるなよw

これ以上求めても仕方ないってどういう意味?
お前にコードの内容を理解するのを求めるのはムダってこと?

719:デフォルトの名無しさん
11/05/08 18:26:02.57
>>716
ほらね

>あのう、私は自分のコードが最善だとも最高だともいっておらず、

誰もあんたのコードを性能がいいとかセンスがあるとか言ってないでしょ
あんたのコードより遙かに短くて遙かに性能がいいコードを他の人が
書いてるよって指摘したのに屁理屈で返すその癖は一生治らないだろうね
人に嫌われて終わり

720:デフォルトの名無しさん
11/05/08 18:29:40.22
頭が悪くて理解できないのに、自分が理解できないのは相手の説得力がないからだとか平気で言えちゃうんだなw

721:デフォルトの名無しさん
11/05/08 18:40:15.47
>>719
確かに話のラインがずれていましたね。
私のコードがとりたててどういうことはない、ということを双方が認識しているのならば、それ以上はいうことはないですね。



722:デフォルトの名無しさん
11/05/08 18:40:37.31
>>720
まさにそれが自己愛性人格障害の特徴だよ

URLリンク(homepage1.nifty.com)

・御都合主義的な白昼夢に耽る。
・自分のことにしか関心がない。
・高慢で横柄な態度。
・特別な人間であると思っている。
・自分は特別な人間にしか理解されないと思っている。
・冷淡で、他人を利用しようとする。
・批判に対して過剰に反応する。
・虚栄心から、嘘をつきやすい。
・有名人の追っかけ。
・宗教の熱烈な信者。

宗教はどうか知らないが、他は全部◆QZaw55cn4cによく当てはまっている
もし◆QZaw55cn4cが妙な新興宗教にはまっていたら確定だな

723:デフォルトの名無しさん
11/05/08 18:44:27.91
>>718
頭の悪い私が、頭の悪い私にとって都合の悪い場面に遭遇したときに、それでも公平さを失わずに対応したつもりです。
頭が悪いなりに >>592 で適切な判断を行えただけで十分で、それ以上のことは、頭の悪い私に求めても、まあむりでしょう。

くらいの意味です。
バスジャックを敢行したりしませんでした、あたりまえですが。

724:デフォルトの名無しさん
11/05/08 18:45:00.16
◆QZaw55cn4cが>>518を解いたコードは本当にゴミクズだろw

725:デフォルトの名無しさん
11/05/08 18:46:00.48
>>592が適切な判断とか、本気で言ってんの?

726:デフォルトの名無しさん
11/05/08 18:47:13.69
>>720
私の頭が悪いのは、私の意志でそうしたわけではない、という理屈が思い浮かびました。

まあちょっといいすぎでしたね。撤回します。

727:デフォルトの名無しさん
11/05/08 18:47:20.54
自分にとことん甘い人間が公平さとか、一体何の冗談なんだろう

728:デフォルトの名無しさん
11/05/08 18:48:36.31
>>725
ええ。素直に負けを認めた点だけが。

729:デフォルトの名無しさん
11/05/08 18:49:32.38
>>592

>ベルトランの仮説(チェビシェフにより証明)

あたりは>>722

>・有名人の追っかけ。

に相当するな

つまり自分の力がないものだから虎の威を借る狐というわけだ

730:デフォルトの名無しさん
11/05/08 18:50:01.23
>>724
エラトステネスのふるいを使わなければ、ゴミといわれても仕方ないですね。大失敗です。

731:デフォルトの名無しさん
11/05/08 18:50:52.80
ああ、コードを全く理解せずに的外れなことをほざいて説明を要求したことは反省してないのか

732:デフォルトの名無しさん
11/05/08 18:51:04.25
>>723
>バスジャックを敢行したりしませんでした、あたりまえですが。

◆QZaw55cn4cがバスジャックを敢行したらある意味祝福に値するな
自分の殻を破れるんだから
それまでは井の中の蛙だ

733:デフォルトの名無しさん
11/05/08 18:51:33.18
>>729
そういわれてもしかたないですね。n から 2n までの間に素数が一個ある、という事実を知っていたのが仇でした。

734:デフォルトの名無しさん
11/05/08 18:52:00.62
>>730
やっぱり篩の速度に負けただけとか思ってんだなw
本当にクソなのはその後の部分だから

735:デフォルトの名無しさん
11/05/08 18:52:37.87
>>731
あれ?コードはおおかたは理解していましたよ。的外れのことをいっていたとは、どのレスですか?

736:デフォルトの名無しさん
11/05/08 18:52:57.25
>>733
ほらまた一言多い
こいつは本当に性格が悪いな

737:デフォルトの名無しさん
11/05/08 18:53:23.25
>>733
まるで他の人はそれを知らないみたいな言い草だなw
知ってても普通の人はそれが関係ないなら影響されたりしないってだけなのに

738:デフォルトの名無しさん
11/05/08 18:54:19.85
◆QZaw55cn4cが刑事事件を起こしたら多分弁護士を付けずに
自分一人で被告人台に立って屁理屈をこね回したあげく裁判官の
心証を極めて悪くして求刑以上の判決が下りそうw

739:デフォルトの名無しさん
11/05/08 18:54:19.94
>>734
うん、それは知りたいですね。よろしければ、ぜひ教えてください。

>>592 で負けを認めていますので遺恨はまったくありませんから、ここでパアッとさらすのもいいと思います。

740:デフォルトの名無しさん
11/05/08 18:55:18.14
>>736
なるほど、それが悪いというわけですね。ご指摘ありがとうございます。

741:デフォルトの名無しさん
11/05/08 18:56:46.98
他人のコードと比較して、自分のコードのクソさが理解できないってどうしようもないよな

742:デフォルトの名無しさん
11/05/08 18:58:54.87
>>737
そうですね。影響されてしまいました。
でも、その影響がどれくらいのものかは実測したつもりです。

743:デフォルトの名無しさん
11/05/08 19:00:46.20
>>741
まあ、そういわずに教えてくださいな。>>559 がクソだとは思っておりますから。

744:デフォルトの名無しさん
11/05/08 19:03:33.32
>>738
それはないと思いますよ。その道の専門家にお金を出すのがベストだと思っています。

745:デフォルトの名無しさん
11/05/08 19:06:04.57
>>591>>672を見ても理解できないなら、何言っても無駄

746:デフォルトの名無しさん
11/05/08 19:07:00.30
>>742
実測?自分の頭の悪さを実測したの?

747:デフォルトの名無しさん
11/05/08 19:14:24.81
>>746
ええ。実測しながら自分の頭の悪さをつくづく思い知らされました。

748:デフォルトの名無しさん
11/05/08 19:17:03.87
>>745
それはエラトステネスのふるいにのっとった形でのベスト形であって、>>559 の考え方にそってやったとしても
もっといい方法がある、ということは示していませんよね。

>>734
>やっぱり篩の速度に負けただけとか思ってんだなw
>本当にクソなのはその後の部分だから
というのなら、>>559 の枠組みの中でも、まだよりよい方法があるということですよね。

749:デフォルトの名無しさん
11/05/08 19:18:17.55
素数の配列だけでやっても591や672のほうが圧倒的に上

750:デフォルトの名無しさん
11/05/08 19:24:29.88
>>748
つーか、あんなアホみたいなやり方が素数の配列でのベストとか思ってたのか?
何回ムダに数えりゃ満足すんだよw

751:デフォルトの名無しさん
11/05/08 22:08:20.48
なんで◆QZaw55cn4cは◆QZaw55cn4cを外してるわけ?
まぁ発言で丸分かりだから関係ないけど

752:デフォルトの名無しさん
11/05/09 02:55:18.58
>>749, >>750
なるほど、確かにまだいい方法がありました。一度作った素数表を潰す発想はありませんでした。
お付き合いいただきありがとうございました。

>>518
>>549 の改良です。
URLリンク(codepad.org)

速度はそんなには速くなっていないようです。大きな配列をコピーする分だけ負担が大きいのかもしれません。
URLリンク(codepad.org)


753:デフォルトの名無しさん
11/05/09 03:04:58.23
うん、まったくコードが理解できてないってことはわかった

754:デフォルトの名無しさん
11/05/09 03:59:16.94
◆QZaw55cn4cは糞だよなぁ

755:デフォルトの名無しさん
11/05/09 06:35:23.83
>static int sumS[TABSIZE];
頭悪すぎて吹いたw

756: ◆XEE2zLj0dE
11/05/09 06:58:59.04
>>752
単にコードを貼ってもいいんだけど、意図も書いといてみる。

>>752の枠組みで改善していくとして。
こちらの環境で20回ループさせた時の速度内訳はこんな感じ。
 トータル 1.95sec
 素数テーブル作成(maketable) 1.37sec
 その後の処理 0.58sec
仕事であれば、maketableの改善を最優先するのが当然だけど、
スレの流れ的に不適当だと思い、その後の処理を対象にした。

ネックとなっている部分が、枝刈りの不十分さとfoundpにあると思われ、かつ
(sumS[j] % 2)によってfoundpの呼び出し回数を減らす工夫が見られたため、
そちらを改善することにした。

// 元コード
if ((sumS[j] % 2) && foundp(sumS[j], n)) {
if (k > max_k) {
max_i = i; max_j = j; max_k = k; max_s = sumS[j];
}
}
// fix 最大値を更新できるときだけ探せば良いので条件変更
if (k > max_k && (sumS[j] % 2) && foundp(sumS[j], n)) {
max_i = i; max_j = j; max_k = k; max_s = sumS[j];
}

単純ではあるけれど、変更後の速度(変更部のみ)
 その後の処理 0.10sec

さらに改善を行おうとするならもうちょっとすすめれば0.07secぐらいにはなったが、今回はここまで。

757:デフォルトの名無しさん
11/05/09 11:46:43.76
◆QZaw55cn4cは糞だよなぁ

758:デフォルトの名無しさん
11/05/09 12:28:49.58
>>756
そんなとこより根本的な問題は、起点の素数から小さいほうを足していくっていう頭の悪すぎるやり方だろ

759:デフォルトの名無しさん
11/05/09 14:15:36.51
こいつにプログラムを組ませたら、動くには動くが、コンピュータの性能を殺した
もっさり動作の無駄の多いプログラムばかり組む

宿題スレではそれでもいいかもしれないが、PGとしては致命的

760:デフォルトの名無しさん
11/05/09 14:17:37.85
無駄を省くとか、シンプルに書くとかいう思考ができないからな

761:デフォルトの名無しさん
11/05/09 14:23:44.12
QZaw55cn4cさん?のコードを多分1万倍くらい加速しました。
URLリンク(codepad.org)

762: ◆XEE2zLj0dE
11/05/09 14:55:07.20
>>758
sumS使ってるやつだとそれしにくいんだけど、上のほうのなら適用できるかも。
それはQZに任せるとして、>>672のもそれいえると思う。
でも、配列を逆アクセスすることになるから逆に遅くなったりはしないかな。
かといって素数リストを降順にしたものを作るのもイマイチ?
各種検証できたらいいなぁと思う。

763:761
11/05/09 15:10:04.08
761
こちらのちょっとしたミスでデータが間違ってました。
修正したのを明日にでもあげるかもしれません

764:デフォルトの名無しさん
11/05/09 15:13:59.38
>>672をちょっと改良

#include <stdio.h>
#include <stdlib.h>
#define N 1000000
int main(void)
{
char sieve[N] = {0, 0, 1};
int i, j, k, head, tail, Ans, length, sum, tail_indx, sum_t;
int *prime, prime_cnt, prime_max;
for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;
for(i = prime_cnt = 0; i < N; i++) if(sieve[i]) prime_cnt++;
prime = malloc(prime_cnt * sizeof(int));
for(i = j = 0; i < N; i++) if(sieve[i]) prime[j++] = i;
prime_max = prime[prime_cnt - 1];
for(i = 1, sum = 2; (sum += prime[i]) <= prime_max; i++);
while(sieve[sum -= prime[i--]] == 0);
Ans = sum, head = 2, tail = prime[i], tail_indx = i, length = i + 1;
for(i = 1; (sum += (prime[++tail_indx] - prime[i - 1])) <= prime_max; i++) {
for(j = 1, sum_t = sum; (sum_t += prime[tail_indx + j]) <= prime_max; j++);
while(j > 1) {
if(sieve[sum_t -= prime[tail_indx + j--]]) {
Ans = sum = sum_t, head = prime[i], tail = prime[tail_indx += j], length += j;
break;}}}
printf("%d : %d to %d, %d\n", Ans, head, tail, length);
free(prime);
return 0;}


765:デフォルトの名無しさん
11/05/10 00:37:30.62
761のプログラムとか見てると何気にQZのコードって凄いんじゃないかと
(超並列実行対応)

766:デフォルトの名無しさん
11/05/10 00:47:37.25
◆QZaw55cn4cは糞だよなぁ

767:デフォルトの名無しさん
11/05/10 03:06:55.02
何気に…
static にしないメリットは、スタック上に毎回新しく領域が作られるから、
オブジェクトモジュールのコピーに耐えられる。

768:デフォルトの名無しさん
11/05/10 03:16:39.03
>>758
これについて考察してみました。

>>549 を題材に、起点から大きい方向に足していくものと小さい方向に足していくものとを比べてみました。

なお、以下の改良を加えています。
>>549 の素数算出(素朴な方法)は割り算を一回にする(div_t div(int a, int b) を使う。)
>>549 の二分探索ルーチンは条件文を1つ削減
>>756 の枝刈りをとれる

起点は2から大きい方向に動き、起点からの走査方向は正
URLリンク(codepad.org)
起点は2から大きい方向に動き、起点からの走査方向は負(オリジナルの>>549 や、sumS[] を使った >>752に近い)
URLリンク(codepad.org)
こちらでプロファイラを使ってもみましたが、両者に差はほとんど認められませんでした。

また >>764 はふるいと素数配列の両方を適材適所に使用して効率を上げていますが、
これを素数配列のみでかきなおしたもの
URLリンク(codepad.org)

結局、素朴法がしょぼすぎ、エラトステネスのふるいの威力が強過ぎで、他での稼ぎはほとんど顕在化しませんでした。

769:デフォルトの名無しさん
11/05/10 03:23:29.51
小さいほうから大きい方を足してくことで、余計な計算を省く工夫をつけられるのが最大の利点なのに、
それを無視すれば同じになるに決まってるだろw

770:デフォルトの名無しさん
11/05/10 03:31:16.06
maketableはふつー
int maketable(int N)
{
int i, j, cnt = 0;

primeS[cnt++] = 2;

for(i = 3; i < N; i += 2) {
for(j = 0; i % (temp = primeS[j]); j++) {
if(temp * temp > i) {
primeS[cnt++] = i;
break;
}}

return cnt;
}
ってやって、奇数だけをチェックする
3を最初に入れる意味が全くない

771:デフォルトの名無しさん
11/05/10 03:33:59.89
10000 + 1 と10000 + 0.01 を比べても意味のある差が出るわけないのになw

772:デフォルトの名無しさん
11/05/10 03:34:36.47
>>769
一応、足しこんだ結果が最大素数を超えればそこで打ち切っており、>>756 の枝刈りも採用しています。
他になにか別の枝狩りはありましたでしょうか?

773:デフォルトの名無しさん
11/05/10 03:36:40.20
>>771
それはそのとおりです。エラトステネスの威力の前に他の小技はかすんでしまいました。
しかし、>>756 は割りあいに有効でした。

774:デフォルトの名無しさん
11/05/10 03:38:46.27
加算の回数、foundp()を呼び出した回数、ループ終了時のiの値等
ちょっと調べてみればどんだけ無駄に計算してるかわかるだろ

775:デフォルトの名無しさん
11/05/10 03:40:42.06
>>770
偶数くらいは弾いてあげるべきでしたね。しょぼん

776:デフォルトの名無しさん
11/05/10 03:59:17.92
>>772
結局>>592以降のやりとりを全く理解してないってことかよw

777:デフォルトの名無しさん
11/05/10 04:04:16.07
>>774
確認しました。なるほど、これは大差がつきました。

起点から正方向に走査: foundp() 284
URLリンク(codepad.org)

起点から負方向に走査: foundp() 1112 (>>549 >>752)
URLリンク(codepad.org)
(足し算の回数はほとんど変わりませんでした)

k の最大値を早期に確定させて、>>756 の枝刈りを最大限に活用するのがいいみたいですね。




778:デフォルトの名無しさん
11/05/10 04:09:35.39
>>764だとでsieve[]で素数がどうか確認するのは27回だけどな

779:デフォルトの名無しさん
11/05/10 04:21:57.95
>>776
そうそう、それもいれなくちゃいけませんでしたね。

起点から正方向に走査:加算:119730, foundp:284
URLリンク(codepad.org)

起点から負方向に走査:加算:728939, foundp:1112 (>>549 >>752)
URLリンク(codepad.org)
しかもこれは、for(i = 0; ... ) での枝刈りがうまく適用できない。

大差ですね。いろいろとコメントいただきありがとうございました。

780:デフォルトの名無しさん
11/05/10 04:30:59.92
自分の頭が本当に悪いことを理解して、2度とム板に書き込むなよ

781:デフォルトの名無しさん
11/05/10 04:32:26.93
>>778
確認しました。>>764 のやりかたは、まだ表っ面しか理解できていないので、
この回数の少なさの理由はまだよくわかっていません。
URLリンク(codepad.org)

782:デフォルトの名無しさん
11/05/10 04:34:39.05
>>780
いやん。

783:デフォルトの名無しさん
11/05/10 04:39:15.43
>>672>>764が理解できないってのは、小学生レベルの算数がまともに理解できないっていうのと同じ

784:デフォルトの名無しさん
11/05/10 10:15:11.79
糞スレ

785:デフォルトの名無しさん
11/05/10 12:17:27.29
◆QZaw55cn4cが書けば書くほどおのれの頭の悪さのボロがどんどん出てくる面白いスレ

786:デフォルトの名無しさん
11/05/10 12:50:27.37
◆QZaw55cn4cのフリ見て我がフリ直せのスレですね
反面教師としてぴったりです

787:761
11/05/10 13:15:06.31
データのほうにミスがあった件を修正中です。
データ件数も32ビット整数の正上限に近い21億にまで
対応しています。
ただし現在PCネットのほう授業で使用中なので、効率が
あがりません。バックグラウンドで一台あたり2000万回
実行させるのは相当のテクニックが必要です。
マシンの1秒間のCPU使用率が自分の作業を除いて
2%以下のタイミングで実行するようにしており
なかなか効率があがりません。
ネットワークレジストリを利用してコマンドをやりとり
しています。正午に作業を開始して現在進捗率10%です。

788:761
11/05/10 17:36:38.17
マシンメンテのタイミングになってしまいました。
この時間はIPCは禁止になります。
生憎レジューム機能がうまく機能しておらず
データの信頼性が疑わしいので、今日・明日の
うpは無理です。進捗率50%まで到達したのに
残念です。

789:デフォルトの名無しさん
11/05/11 05:24:43.57


790:デフォルトの名無しさん
11/05/12 00:09:23.42



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch