#define X ( 1 << 20 )
#define uint unsigned int

uint *buf = (uint *)malloc( X * sizeof(uint) );
if ( buf == NULL ) return;
tricklib::prime_spiral_dice dice( 100 );
for (uint i=X; i--; ) buf[ i ] = dice.roll();
sort( buf, X );//なんでもいい。シェルソート使った。
uint cnt[ 32 ], same = 0, p = buf[ X - 1 ];
for (uint i=X-1; i--; ) {
uint t = buf[ i ];
if ( t == p ) {
same++;
} else {
if ( same > 31 ) same = 31;//オーバーフロー対策
cnt[ same ]++;
same = 0;
}
p = t;
}
メモリに全部書き出してソートして前と同じならカウンタをインクリメント。
>>529
それ多分使い方違う。
テーブルが初期化されてない。
まあ、テーブル次第で悲惨な結果になるという見本ではある。

分かると思うけど作者じゃないよ。
アルゴリズム的に穴が多いから自分は使う気はないし。