プログラミングの為の ..
[2ch|▼Menu]
276:デフォルトの名無しさん
05/10/19 23:05:17
>>268
一応言っておくと「楕円方程式」と「楕円の方程式」は別物ですよ
ここで言ってるのは前者ですね

277:デフォルトの名無しさん
05/10/19 23:06:43
違った後者だ

278:デフォルトの名無しさん
05/10/21 20:14:16
いや、実は前者。俺の言うことを信じろ。

279:デフォルトの名無しさん
05/10/21 23:53:52
皆だまされるな!正しくはもちろん後者だ。

280:デフォルトの名無しさん
05/10/22 00:56:25
俺の言うことだけが本物だ。信じろ。
前者に決まっとる。

281:デフォルトの名無しさん
05/10/22 03:32:24
本当の事言うと。
どっちもどっちw

282:デフォルトの名無しさん
05/10/24 13:41:54
真実は闇の中…。

283:デフォルトの名無しさん
05/10/24 21:16:45
問:>>276-282のなかで嘘つきを断定せよ。
参考:>>268

284:デフォルトの名無しさん
05/10/26 14:03:53
今だから真実を告白したい…>>283こそが嘘つき。

285:デフォルトの名無しさん
05/10/26 23:53:36
>>284
嘘つきになる要素が・・・

286:デフォルトの名無しさん
05/10/27 13:49:13
俺こそが嘘つき。

287:デフォルトの名無しさん
05/10/27 14:31:05
この中に1人、明らかな矛盾を述べたものが居るっ!!!

288:デフォルトの名無しさん
05/10/27 15:00:16
>>287 お前やろ?

289:デフォルトの名無しさん
05/10/27 22:38:31
ヴルルル、自分は絶対嘘なんかついてますねん。

290:デフォルトの名無しさん
05/10/28 00:58:51
バカっていったやつがバカ

291:デフォルトの名無しさん
05/10/28 01:04:29
>>289 お前やー!!

292:291
05/10/28 01:05:14
…決め台詞で割り込まれた orz

293:デフォルトの名無しさん
05/10/28 01:10:03
おまえら落ち着け…
素数を生成するコードを書いて落ち着くんだ…

294:デフォルトの名無しさん
05/10/28 01:21:54
10 N=1
20 N = N + 1
30 K=2
40 IF N = K THEN LPRINT N
50 IF N MOD K = 0 THEN GOTO 20
60 K = K + 1
70 GOTO 40

295:デフォルトの名無しさん
05/10/28 10:58:22
やれやれだぜ…

296:デフォルトの名無しさん
05/11/04 02:06:55
だぜ、って懐かしいよな。

297:デフォルトの名無しさん
05/11/04 22:23:21
>>296
「だぜ」に突っ込むか・・・。
「やれやれだぜ」自体が漫画の台詞。
ジョジョ。

298:デフォルトの名無しさん
05/11/04 23:27:22
「だぜ」って「学校に行こう」に出てたヤシだろ?

299:判定
05/11/08 14:02:29
>>297-298
どっちも知る人ぞ知るってな話題だが>>298の方がよりマイナーと思われ。

300:& ◆BSGaog1Z0Q
05/11/08 14:18:52
#include<iostream>
//>>294
std::ostream& dumpPrimes(std::ostream& os, int max) {
 for(int n=2; n <= max; ++n){
  for(int k=2; ; ++k){
   if(n==k) {
    os << n << "\n";
   }
   if(n % k == 0) {
    break;
   }
  }
 }
 return(os);
}

301:デフォルトの名無しさん
05/11/08 14:36:01
std::ostream& testDiv(std::ostream& os, int n, int k){
if(n==k){
os << n << "\n";
}
return((n % k == 0)? os: testDiv(os, n, k+1));
}

std::ostream& testNum(std::ostream& os, int max, int n){
return((n > max)? os: testNum(testDiv(os, n, 2), max, n+1));
}

std::ostream& dumpPrimes(std::ostream& os, int max) {
return(testNum(os, max, 2));
}

302:デフォルトの名無しさん
05/11/16 22:10:39
>Wikipedia項目リンク 

> 素数は無限に存在する。
> 
> エウクレイデスによる証明 
> 背理法による。 
> 素数が有限個しかないと仮定し、それらを次のようにおく。 
>  
> pi, i <= n 
> ただし n は定数。 
> 
> q = p1p2p3...pn + 1
> 
> を考えよう。q は合成数であるか素数であるかのいずれかである。 
> q が合成数だとすると q は pi のいずれかを用いて積の形に表されるはずである。その一方で q は pi のいずれで割っても 1 があまり、矛盾する。 
> 素数だとすると、これは pi のいずれとも異なるから素数が有限個しかないことに反する。 
> Q.E.D. 

この証明変だよね。


303:デフォルトの名無しさん
05/11/16 22:18:18
>>302
どこで引っかかった?何が変?

304:デフォルトの名無しさん
05/11/16 22:22:32
「素数は無限に存在する」ことの証明だから、
「qが合成数」も「素数が有限」も否定していいんだよ。

305:302
05/11/16 22:29:52
> q が合成数だとすると q は pi のいずれかを用いて積の形に表されるはずである。

そうとは限らない
 2  + 1 =
3 is a prime.

 2 x 3  + 1 =
7 is a prime.

 2 x 3 x 5  + 1 =
31 is a prime.

 2 x 3 x 5 x 7  + 1 =
211 is a prime.

 2 x 3 x 5 x 7 x 11  + 1 =
2311 is a prime.

 2 x 3 x 5 x 7 x 11 x 13  + 1 =
30031 is 509 x 59

 2 x 3 x 5 x 7 x 11 x 13 x 17  + 1 =
510511 is 97 x 5263

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19  + 1 =
9699691 is 27953 x 347

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23  + 1 =
223092871 is 703763 x 317


306:デフォルトの名無しさん
05/11/16 22:37:59
>そうとは限らない
> 2 + 1 =
>3 is a prime.
2<3
> 2 x 3 + 1 =
>7 is a prime.
3<7
> 2 x 3 x 5 + 1 =
>31 is a prime.
5<31
> 2 x 3 x 5 x 7 + 1 =
>211 is a prime.
7<211
> 2 x 3 x 5 x 7 x 11 + 1 =
>2311 is a prime.
11<2311
> 2 x 3 x 5 x 7 x 11 x 13 + 1 =
>30031 is 509 x 59
13<59
> 2 x 3 x 5 x 7 x 11 x 13 x 17 + 1 =
>510511 is 97 x 5263
17<97
> 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 + 1 =
>9699691 is 27953 x 347
19<347
> 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23 + 1 =
>223092871 is 703763 x 317
23<317
論外なところから値を引っ張ってきて論じようとしている。
23が「最大」の素数であれば、317は素数でも合成数でもないのでどちらにしても矛盾がしょうじる。

307:デフォルトの名無しさん
05/11/16 22:41:27
>>305
この推論は「素数が有限個しかない」という偽の前提があるから、反例を持ち出してもしょうがない。
> q が合成数だとすると q は pi のいずれかを用いて積の形に表されるはずである。
これは、「合成数は有限個の素数の積で表される」という定理と「素数はpiしかない」からの帰結。

308:302
05/11/16 22:49:50
素数が有限個しかないとは思ってませんが、

> q が合成数だとすると q は pi のいずれかを用いて積の形に表されるはずである

そうでない場合もあるとは思いませんか?
そして、その場合についても論ずるべきでは?

309:デフォルトの名無しさん
05/11/16 22:57:11
>>308
だから、>>307に書いたように、
> q が合成数だとすると q は pi のいずれかを用いて積の形に表されるはずである
は「素数がpiしかない」という仮定の下で証明できる。
証明できるからには、これが偽である可能性を検討する必要はない。

310:302
05/11/16 23:37:43
では、エウクレイデスによる証明は、  

>「合成数は有限個の素数の積で表される」という定理

を前提としているわけですか?

311:デフォルトの名無しさん
05/11/16 23:45:05
>>310
群論か環論の本を読んでくださいな、素元、既約元のあたりです。あとできれば背理法についてもね。

312:デフォルトの名無しさん
05/11/16 23:57:48
>>310
細かい違いはあるかも知れない(例えば、その定理の代わりに「合成数は素因数を持つ」でも十分)けど、
基本的にはその通りだと思う。

313:302
05/11/17 00:16:30
じゃあこの部分を

> を考えよう。q は合成数であるか素数であるかのいずれかである。  
> q が合成数だとすると q は pi のいずれかを用いて積の形に表されるはずである。その一方で q は pi のいずれで割っても 1 があまり、矛盾する。  
> 素数だとすると、これは pi のいずれとも異なるから素数が有限個しかないことに反する。  

こう変えてもいいですか?

 を考えよう。q は合成数であるか素数であるかのいずれかである。  
 q が合成数だとすると q は pi のいずれかを用いて積の形に表されるとき、q は pi のいずれで割っても 1 があまり、矛盾する。  
 また q は pi のいずれかを用いて積の形に表されないとき、q は pi を超える素数を持ち、矛盾する。  
 素数だとすると、これは pi のいずれとも異なるから素数が有限個しかないことに反する。  


314:デフォルトの名無しさん
05/11/17 00:19:56
おまいらプログラマらしく素因数分解のアルゴリズムでも考えよう
128bit暗号を解読できるくらいのを

315:デフォルトの名無しさん
05/11/17 00:31:12
>>313
ちょっとおかしいところ(「piを超える素数」じゃなくて「pi以外の素因数」というべき)があるけど、大筋としてはそれでもいい。
でも、そう書き換えたところで推論の構造はほとんど変わっていないし、
「合成数は素因数をもつ」ことに依存しているのも変わらない。

316:302
05/11/17 00:46:27
そうですか。
自分なりに納得できて助かりました。
ありがとうございました。

317:デフォルトの名無しさん
05/11/17 01:16:31
代数学か。懐かしいな。

318:デフォルトの名無しさん
05/11/17 11:36:57
>>311
いや、真っ先に背理法を理解すべきでは?

319:デフォルトの名無しさん
05/11/17 12:27:31
大きくなれよ

320:デフォルトの名無しさん
05/11/17 13:05:04
背理 背理 振れ 背理法〜

321:302
05/11/17 16:06:10
たびたびすみません。
素数を順番にかけるとint型では、23までしかいけなかったので
double型でやったら、途中からおかしな答えになりました。
下から2番目なんですが、答えが1大きくなりました。
なんでなんでしょう?

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23 x 29 + 1 =
6469693231 is 331 x 19545901

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23 x 29 x 31 + 1 =
200560490131 is a prime.

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23 x 29 x 31 x 37 + 1 =
7420738134811 is 181 x 40998553231

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23 x 29 x 31 x 37 x 41 + 1 =
304250263527211 is 61 x 4987709238151

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23 x 29 x 31 x 37 x 41 x 43 + 1 =
13082761331670032 is 2 x 6541380665835016

 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23 x 29 x 31 x 37 x 41 x 43 x 47 + 1 =
614889782588491390 is 2 x 307444891294245700


322:デフォルトの名無しさん
05/11/17 16:08:50
2進数で表すと分かるかも。doubleの内部ビット表現を調べてみな。

323:デフォルトの名無しさん
05/11/17 17:01:31
>>321
浮動小数点表現の仮数部が 52 ビットのとき、精度は 15.6 桁。
…って、計算機の初歩の初歩だろうに。

324:302
05/11/17 17:11:45
>>322
レスありがとうございます。

2進数の表し方がわからなかったので、
16進数で見てますが、所々おかしなところがあり、
手直ししています。

>>323
そうでしたか、出直してきます。

325:デフォルトの名無しさん
05/11/17 21:07:29
SA(シミュレーテッド・アニーリング)法で
巡回セールスマン問題解くプログラム作ってるんですけど
このスレでいいっすか?
それとも数学板に行ったほうがいいですかね?

URLリンク(www.watanabe.nuie.nagoya-u.ac.jp)
↑でとりあえず理屈はわかったんだけど
摂動行列の決め方がわからん。

ていうか
あるルート候補から次のステップのルート候補作るときに
全部シャッフルしたらさすがに効率悪そうだし
隣同士入れ替えただけだともろ局所解に引っかかりそうだし。

なんか巡回セールスマン向けのうまい方法
(あるルートXnからX(n+1)を作るアルゴリズム)
だれかしらないですか?

326:デフォルトの名無しさん
05/11/17 22:09:18
>>325
アニーリング関数が適当なら、その隣同士とかでやったとして
局所的なくぼ地にはまってしまうような場合であっても
少ない確率ではあるけどそのくぼ地を乗りこえることかできるから
結局それなりにうまくいくんじゃないのかな

327:デフォルトの名無しさん
05/11/18 00:37:31
>>321
つ[long long]

328:デフォルトの名無しさん
05/11/19 09:22:25
>321
つ[多倍長演算]

329:デフォルトの名無しさん
05/11/19 10:35:17
読みって「たばいちょう」?

330:デフォルトの名無しさん
05/11/19 11:18:12
>>329
OK!

331:デフォルトの名無しさん
05/11/19 11:26:32
束井町の塩山では今年も岩塩の収穫の時期になりました

332:デフォルトの名無しさん
05/11/19 11:29:02
えっ?どこっ?なに?誤爆?束胃腸・・・?

333:デフォルトの名無しさん
05/11/19 13:23:14
>>330
サンクス。
変換しても出てこないので違うのかなと思っていた。

334:デフォルトの名無しさん
05/11/19 13:51:31
>>333
かな漢字変換辞書が全ての技術語を網羅しているわけがないだろう。
それともあれか、藻前は「へんかんできないからそんな字ない」とか言っちゃう小学生か?

335:デフォルトの名無しさん
05/11/19 19:32:31
つーか他の読みをしようにもたばいちょうとしか読めん

336:デフォルトの名無しさん
05/11/19 20:10:17
>>334
そんなにキツく言わんでも・・。

337:デフォルトの名無しさん
05/11/20 22:49:35
今 1 から N までの N 個の異なる自然数からなる順序付きタプルを入力に受け,
そのタプルが大きさ N の全順列中において辞書順で何番目かを返すアルゴリズムを
実装したいんですが,どういうアルゴリズムが考えられますか?
例えば, {1, 2, 0} を与えたら 4 を返すような感じのアルゴリズムです.

338:デフォルトの名無しさん
05/11/20 22:53:59
タプルって何だっけ?

339:デフォルトの名無しさん
05/11/20 23:01:25
>>338
tuple
【名】 組、《コ》タプル

340:デフォルトの名無しさん
05/11/20 23:08:44
>>337
それの例のまま、 {1, 2, 0} で考えると、
最初が 1 → このタプルより前には {0, *, *} がある → 前に 2! 個 = 2個 ある
次が 2 → でも1は出てる → これより前で、{0, *, *} 以外のものは {1, 0, *} → 1個
だから、{1, 2, 0} より前には3個のタプルがあるから、
{1, 2, 0} は4番目。って感じ?

1つ数字増やして {2, 3, 1, 0} とかでいくと、
最初、{0, *, *, *} と {1, *, *, *} 数えて、 3! = 6個
次、{2, 0, *, *} と {2, 1, * *} で 2×2! = 4個
次、{2, 3, 0, *} があるから 1個
計11個前にあるから {2, 3, 1, 0} は12番目。

341:デフォルトの名無しさん
05/11/20 23:10:03
Nがわかったら、順列を順に生成する関数に渡せば良いんじゃね?(N,{0,1,2}を渡す)
で、マッチングをとる。

342:デフォルトの名無しさん
05/11/20 23:17:15
あっ、340 の {2, 3, 1, 0} の例、最初は 3! じゃなくて 2×3! =12、
最後の結果も18だわ。

>>341
それだと順列生成自体が糞重たいし、コーディング結構難しくない?

343:デフォルトの名無しさん
05/11/21 00:32:41
魔法陣って4×4で出来ますか?

344:デフォルトの名無しさん
05/11/21 01:58:19
できます

345:デフォルトの名無しさん
05/11/21 11:28:06
>>340 の考え方で C++ 使うと

  std::vector<int> src, arr;
  src.push_back(1);
  src.push_back(2);
  src.push_back(0);
  arr = src;
  size_t ct = 0;
  do {
    #ifdef _DEBUG
    std::cout << "{";
    for (int i=0; i<arr.size(); i++)
      std::cout << (i? ", ": "") << arr[i];
    std::cout << "}" << std::endl;
    #endif // _DEBUG
  } while (ct++, std::prev_permutation(arr.begin(), arr.end()));
  std::cout << ct << std::endl;

結果:
{1, 2, 0}
{1, 0, 2}
{0, 2, 1}
{0, 1, 2}
4

346:デフォルトの名無しさん
05/11/21 15:45:08
>>337
素直に説明を読むと、

「1からNまでのN個の順列組み合わせを辞書式順序で並べたとき
各組合わせは何番目?」

という問だと思うのだが、いきなり組の要素に0があったりするのはなぜ?

347:337
05/11/21 18:58:04
>>340
素直にやるなら,前から順に読んでいって現れた数字を記録しないとならないですよね.
前から順に読んで現れた数字より大きい数字を全てデクリメントしていくやり方も
あるのかな?参考になります.

>>345
これって 340 さんの考え方じゃなくてむしろ 341 さんの考え方ですよね?

>>346
すいません.最初,説明を「0 から N-1」と書いてて後で直したんですが
例を書き直すのを忘れてました.337 の正しい例は {2, 3, 1} です.

348:デフォルトの名無しさん
05/11/22 04:02:57
>前から順に読んで現れた数字より大きい数字を全てデクリメントしていくやり方

それでいいんでね?

(1)result=0で初期化
*ここで、1〜Nの整数が、適当に並べ替えられて並んでいたとして、
(2)N=1ならresult+1を返し終了。
(3)左端の数aに対し (a-1)*(N-1)! を計算し、resultに加算。
(4)列の中で、aより大きい要素は全て1だけ減らす(小さい要素はいじらない)。
(5)先頭のaを切り落とし(N=N-1)、残った列に対し*に戻る。

349:340
05/11/22 12:02:43
>>348
それ見てて思ったけど、
(3)(階乗計算)とか(4)の計算に掛かる時間を考えると、
>>345 のコードよりも計算量大きくなるかも。
>>345 だと標準ライブラリの機能そのまま使っててコード量的にも少ないし。

順列生成のアルゴリズムって、>>345 の結果見てる感じ、
バブルソートを1ステップずつやるようなものなのね。

350:デフォルトの名無しさん
05/11/22 16:31:37
似たような問題で、よく出るのが、

 1 から N までの N 個の異なる自然数による順序付タブル をランダムに出力せよ


351:デフォルトの名無しさん
05/11/22 18:36:00
タブル

352:337
05/11/23 22:03:52
>>349
345 さんのコードだと平均・最悪で O(N!) な一方で
348 さんのだと平均・最悪で(階乗計算も含めて) O(N^2) ですから,
特別な事情がなければ 348 さんのを選択するのが良いと思います.
というか 348 さんのアルゴリズムで実装できました.ありがとうございました.

353:デフォルトの名無しさん
05/11/28 23:10:17
新スレたてました!

フーリエ変換が趣味です。
スレリンク(hobby板)

354:デフォルトの名無しさん
05/11/29 19:35:47
『任意の微分方程式を与えられたとき、それを解くプログラムを記述せよ。ただし、す
べての方程式を解くことは困難なので、そのプログラムで解ける範囲を指定し記述せよ。』
この問題のアルゴリズムと、ソースを書いてくれませんか?
ここで悩んでいるので是非とも力を貸してください!!お願いします。

355:デフォルトの名無しさん
05/11/29 19:36:39
師ね

356:デフォルトの名無しさん
05/11/29 19:36:55
×力を貸してください
○答え教えろ

357:デフォルトの名無しさん
05/11/29 20:08:28
>すべての方程式を解くことは困難なので、そのプログラムで解ける範囲を指定し記述せよ。』
とりあえずオイラー法を用意して、それで解ける範囲を明示しておけばレポート通るんじゃね?

358:デフォルトの名無しさん
05/11/30 01:23:23
あからさまに宿題をそのまま出されるとな・・・

359:デフォルトの名無しさん
05/12/07 23:46:24
URLリンク(www-ise2.ise.eng.osaka-u.ac.jp)
上記のサイトで、Sinをテイラー展開で求めているようですが、

sin(0.00) = NaN (非数値)
sin(0.01) = NaN (非数値)
sin(0.02) = NaN (非数値)
    ・
    ・

となってしまいます。どこが間違っているのでしょうか?

360:デフォルトの名無しさん
05/12/08 00:11:24
0で割りゃあ、非数になるわなw

double Sin(double x)
{
 double xx = -x * x;
 double fact = 1;
 double sin = x;
 for(int i=1; i<100; )
 {
  fact *= ++i; fact *= ++i;
  x *= xx;
  sin += x / fact;
 }
 return sin;
}


361:デフォルトの名無しさん
05/12/08 00:16:08
っつーかおまいら、2ch にさらす暇あったら作者に報告入れろって。

362:359
05/12/08 00:39:53
>>360
なるほど! 数学関連の話で、何が合っていてどこから手をつけていいものか
困り果てているところでした。非常にお早いレス感服いたします。
ありがとうございました。

>>361
すみません。いくつか間違いがみられ、一応メールアドレスを探してみた
のですがわかりやすい位置になかったので、すぐに断念してしまいました。

363:デフォルトの名無しさん
05/12/08 00:42:21
i=100から順に計算した方が精度が上がると思う

364:デフォルトの名無しさん
05/12/08 01:32:54
数学的に正しくてもプログラム的にどうなのかは別問題なのす

365:340
05/12/08 11:29:34
>>362
トップページたどれって。
全ページに連絡先入れといた方がいいのか?

>>363
それいいだすとさ、
π/2 の範囲に収まるように mod 2π とか三角関数の公式使って変換して、
sin と cos のどちらか選んで計算するとか、凝りだすときりない。
餅は餅屋と言う奴で、そういうのは数値計算屋さんにお任せしないと。

366:デフォルトの名無しさん
05/12/08 22:43:03
>>365
ウェブページの作り方的な話なら、
全ページにaddress要素は入れるのが基本
address要素内には連絡先として通常メールアドレスが入る

367:デフォルトの名無しさん
05/12/08 23:13:51
>>366
それ、確かに推奨はされてるけど、
ボットにアドレス収集されるのが嫌で、実際やってる人いなくない?

368:デフォルトの名無しさん
05/12/08 23:25:27
>>367
俺はやってるよ
あるいは自働収集が嫌って言って
画像を使ったり余計な文字をはさんだりしてる人もいる

要は形式上の問題じゃなくて、
>>362みたいな状況にならないようにっていうのが
目的なんだし。

369: 【凶】 【308円】
06/01/01 07:54:11
あけましておめでとう。 求む 質問・疑問 

370: 【だん吉】 !otoshidama
06/01/01 08:40:35
さっきやったら大凶が出たぞ!

371:デフォルトの名無しさん
06/01/09 00:38:04
答えが来るかわからんけど
マージソートについて勉強してます

マージソートの配列の分割についてなんですけど
例えば8だけの場合は
4 4
2 2 2 2
1 1 1 1 1 1 1 1
とだけ分割できると思います。

ですが例えば要素が34の場合
17 17
と一回だけ分割すると素数になってしまいます。
更に極端にしますと
7や23などの要素の個数の場合はどう分割するのでしょうか・・
まだ勉強初めて1日だけなんでアレですが参考のページでもあると嬉しいです

372:デフォルトの名無しさん
06/01/09 00:49:45
>>371
そりゃ、8と9に割ればいいじゃん。

373:デフォルトの名無しさん
06/01/09 00:54:24
>>372
しかしその場合併合(マージ)しようとするとどんな風になるのでしょうか
グーグル先生のイメージ検索はエレメントの個数が偶数ばかりのもので・・
勉強してきます(´・ω・`)

374:デフォルトの名無しさん
06/01/09 00:56:37
どんな感じってソートするだけだろ。

375:デフォルトの名無しさん
06/01/09 03:02:59
>>373
べつに偶数のときとかわらん。
違う数に分割されたからといって
コードの何処も変える必要なんかない。

そんな必要があったら
そもそもマージソートじゃない

376:デフォルトの名無しさん
06/01/09 10:30:58
>371
例えば9の場合、
4, 5
(2, 2), (2, 3)
((1, 1), (1, 1)), ((1, 1), (1, 2))
((1, 1), (1, 1)), ((1, 1), (1, (1, 1)))
と分割すればいい。
てか図解すると並列に見えるけど、実際の処理は再帰的に行われるから、
部分的に階層が深くなっても問題ない。

URLリンク(oku.edu.mie-u.ac.jp)
の mergsort.c 読めば解るよ。

377:デフォルトの名無しさん
06/01/09 13:56:17
>>373
つーか、聞く前に一度自分で実際にやってみ。
マージって全然個数の違う2つの列相手にもできるから。
例えば極端な話 1, 16 とかで分けてもマージできる。

378:マイク ◆yrBrqfF1Ew
06/01/23 00:20:53
シュレーディンガーの猫というのは簡単に言うとあれだろ
堀江由衣の処女

379:デフォルトの名無しさん
06/01/23 04:26:20
         ,,-‐----‐、 , -'"` ̄ ̄"`''-,__, --‐‐-..,
        /  、゙ヽ、 ‐-'´          ヽ‐- / /   ヽ
      ,/´ .., ヽ,,l_),'              '、,ト/ /    ヽ
     /    ヽ,r' l      .,、z:ュ、,_.  ,、=,゙.-〈__r,'、   ヽ_
    _.l    ヽ」   , l.     ´ ,r'ャ、`' i'rャ;|    ゙‐ヽ、_,,  /l
    ,l l|  −'´ll  ,ll ヽ.      ''`¨¨´   ヽ |    .,//゙l   //\
    l`l|     l|ヽ  ヽ 入        ,ィ _.  ', l    |l    //   }
   l  \    l| ,l  ヽ_.      ' `'゙`'‐'i゙ ,'    |,l   //    l   バカジャネーノ
   /   '\   l|`l   l ヽ`'.    ,∠.ニフ /    l ヽ //     |
  ,l     '\ l| .lヽ_l ` 、 、   い.... ,' /___/ |  ∨/      ,}
  |       ヽl |    ,| .ヽ', .ヽ`二フ.,' ヽ     ,|          ,l
  |          l    ,l   ' .、,_`,.ィ  l \           /
  ヽ          |   \.    ヽ/    l  ヽ         /j
    \        /     ヽ    ヽ  |   l          /
     ゙l\..     /      ヽ     ヽj   |    ,    /
     ヾ              ヽ     ヽ   ヽ  /    ,l
      ヽ、             ヽ     l   } /    ,r
        ヽ             ヽ     |  /′ ,,...''
        `'':..、  ___ ___,..-..   |,    ,l ,  :..-‐'"´
            ̄ /lr‐‐‐'--、_.....  l_,..-'''""'- "

380:デフォルトの名無しさん
06/01/30 23:54:04
原点(0,0)を中心とした半径Rの円がある
中心点から角度θの軸を考え、横2W縦2Hの長方形の中心がこの軸を移動するとして
長方形の頂点が円周上にくる点の座標は?

381:380
06/01/30 23:55:32
>>380書き忘れ
長方形は円の内側にあるものとする

382:デフォルトの名無しさん
06/01/31 00:41:23
>380-381
人にモノ聞く態度じゃねぇな。
出直して来い。

383:デフォルトの名無しさん
06/01/31 09:44:41
それになんか問の内容も何がいいたいかよーわからん。
もしかして日本語が不自由な方なんでわ?

384:デフォルトの名無しさん
06/01/31 10:41:19
ここは宿題スレじゃないんじゃね?

385:デフォルトの名無しさん
06/01/31 18:07:46
正方形じゃねーのかな・・・

386:デフォルトの名無しさん
06/01/31 18:42:49
プログラムじゃなくて普通に算数(三角比を使うにしても数学ってほどじゃない)だなぁ。とりあえず解いたんで書く。
r=-(Wcosθ+Hsinθ)+√(R^2-(Wsinθ-Hcosθ)^2) として
(rcosθ+W, rsinθ+H) …(1)
θの範囲は0≦θ<π/2だけどね。他の範囲は(1)式にある符号が変化するだけのはず。

387:デフォルトの名無しさん
06/02/01 08:22:33
>>386
それだと、 W = H = 0 の時にしか、長方形の頂点が円周上にこないんじゃない?
「点の座標」ってのが長方形の中心だとしても頂点だとしても。

多分やつは問題を理解できてないんだろうなあ。
2Dゲーム作ってて、円形フィールドからはみ出さないようにしたい、と推測したがどうか。

388:デフォルトの名無しさん
06/02/01 17:20:04
>>387
それだと浮動小数点でやってる場合、
点の座標を求めて=で判別したらイタイ目見そうだ。
(丁度等しくならなかった時に判定をスリ抜ける。)
不等式で「内側」の度合い評価できる基準を見つけないと。

389:デフォルトの名無しさん
06/02/01 17:29:09
2Dゲームの判定に使う程度なら
たぶん長方形の外接円で判定してごまかすのが楽なんじゃないかなぁ。
中心点同士の距離と半径だけで判定できる。
2乗ノルムでやれば平方根もいらないし。

もし精密にやりたければ上記の方法で簡易判定して明らかに接触しない事例を除いた上で
拙速するかもしれないケースだけ長方形を構成する線分が交差するかどうかを判定すれば
いいのかな。

390:デフォルトの名無しさん
06/02/01 17:31:22
で、この場合長方形の軌道は無視して一般化できて
軌道は具体的に長方形の位置を計算する以外は無関係だね。

391:マイク ◆yrBrqfF1Ew
06/02/04 00:33:27
log(2)(x-1) + log(1/2)(3-x) <= 0 //logの真ん中の()は底
を満たすxの値の範囲は
a < x <= b

このaとbと導かれる過程がわからん。
包茎じゃなくて東京六大学に在学中か卒業した人だけ答えてくださーい。

392:デフォルトの名無しさん
06/02/04 11:10:14
ヒント: a<x の部分は真数条件から

393:デフォルトの名無しさん
06/02/05 13:36:53
                           ___    _
   | ̄|  />  _           _   /   _|   | |  />
   |  |//   \ \   __   / /   \ \.     |  |//
   |    \     \ \/ \/ /       〉 ヽ.    |   \
   |  |\ \     \ /\ /    | ̄ ̄   ノ     |  |\ \
 /::::/'"   ̄ヾi    /  ̄ ̄ \  /::::/'" ̄ ̄ヾi   /   ̄   ヽ
 |:::::::| ,,,,,_  ,,,,,,|   |  ^   ^  |  |:::::::| ,,,,,_  ,,,,,,|  |  ^    ^  |
 |r-==( 。);( 。)   | >ノ(、_, )ヽ、.|   |r-==( 。);( 。)   | >ノ(、_, )ヽ、.|
 ( ヽ  :::__)..:: }    ! ! -=ニ=- ノ !  ( ヽ  :::__)..:: }   ! ! -=ニ=- ノ !
  ヽ  ー== ;      \ `ニニ´ /   ヽ  ー== ;    \ `ニニ´ /
   \___ !        ̄ ̄       \___ !        ̄ ̄ ̄

394:デフォルトの名無しさん
06/02/06 04:30:36
東京六大学ってスポーツリーグだろ?
あんなかでまともな偏差値誇ってんのは
東京 慶應 早稲田 だけだろ
あとの三つは……やめた。


395:デフォルトの名無しさん
06/02/06 11:34:15
>391
名大出のしがない漏れは
頑張って答えようとしたりせずにニヤニヤしてれば好いわけね?

396:デフォルトの名無しさん
06/02/06 19:59:06
包茎云々は法政のことかいのう・・・

397:デフォルトの名無しさん
06/02/07 22:59:21
法経学部?

しかし>391ってまるっきり高校レベルじゃないか

398:デフォルトの名無しさん
06/02/08 12:53:00
>>397
シッ! 皆わかっててニヤ(・∀・)ニヤしてるんだから!

399:マイク ◆yrBrqfF1Ew
06/02/08 18:49:12
高卒・大卒なのにセンター試験の問題すら答えられないんだね;)

400:デフォルトの名無しさん
06/02/09 10:40:54
>>399
イヤー、オヂサン参ったな。ナント院卒だが答えられないぞ。
>391が出した問題の最後に示された条件:

> 包茎じゃなくて東京六大学に在学中か卒業した人

を満たすことができないからなー。何せ漏れは重度の冠頭包茎だし、
名古屋生まれの名古屋育ちで大学も院も名古屋大学だからな。
漏れがこの問題に答えるためには
東京6大学(慶応、上智、東京、明治、立教、早稲田)のどっかに入らないと
イカンわけだろ?
いやー回答者の資格に制限がある問題は難しいわ、ホント難しい、
全然答えられそうにないよwww
最近のセンター試験ってこんな答えるのが難しい問題出すの?(・∀・)

401:デフォルトの名無しさん
06/02/09 10:43:17
解らないっつってた本人が捨て台詞。
相変わらず莫迦なコテだな。

402:400
06/02/09 11:08:11
あ、書き忘れてたけど漏れが問題に答えるためには
My包皮も切らないとイカンのかー。やっぱ難しいわ。
漏れ包皮ついてるほうが好きだし、
臆病者だから体の一部切るなんてコワいしなー。

403:マイク ◆yrBrqfF1Ew
06/02/09 17:15:47
>>401
エセ学歴な上にノータリンですか?(▽

>>400
名古屋はもういいよ。

404:400
06/02/09 17:45:26
ま、>>391には皮肉も通じないようなんでマジレスに切り替えるけどね。

思うんだが学歴を今後も問題の条件に入れ続ける気なら
学歴板でも行ったらどうかと思う。
ここはプログラム板の数学スレだから学歴は関係ない。
そしてプログラムに関係ないセンター試験の問題について
受験生向け解説依頼を受け付けるスレでもない。
受験生ならオトナシク受験板でも行ってたほうがいいんじゃない?

大学受験板
URLリンク(etc4.2ch.net)

学歴板
URLリンク(tmp6.2ch.net)

405:マイク ◆yrBrqfF1Ew
06/02/09 18:10:56
答えたくなければいいんですよ。
答えなくなければね;)

406:デフォルトの名無しさん
06/02/09 18:16:13
実際答えたくねーし。

407:デフォルトの名無しさん
06/02/09 18:39:45
プログラムに関係ない受験数学の質問する厨な荒しは
今後スルーが相応と思うがどうか?

408:デフォルトの名無しさん
06/02/09 19:39:20
すべて水に流して 心機一転

 ー  再開  ー



409:マイク ◆yrBrqfF1Ew
06/02/09 21:36:08
>今後スルーが相応と思うがどうか?

毎度スルースルーと言ってる割には毎度我慢できなくなってレスしちゃうんだね。
子供?;)

410:デフォルトの名無しさん
06/02/10 00:01:50
ここはム板なんだから、やっぱプログラム的に
近似的に解くべきだなw

411:デフォルトの名無しさん
06/02/10 02:34:30
>>409
えーと、どこで笑えばいいのかな?

412:デフォルトの名無しさん
06/02/10 16:15:10
>>410
じゃぁ、両端を探すために二分探索でもするか?

413:デフォルトの名無しさん
06/03/01 22:02:54
>>411
 m9(^Д^)
じゃなくて
 ;)
を無理して使うとこ

414:デフォルトの名無しさん
06/03/03 14:58:11
自分の趣味としては;)よりは;-)

415:デフォルトの名無しさん
06/03/09 09:58:52
僕的には :-P
とかがかわいくて好きでつ

416:デフォルトの名無しさん
06/03/09 11:39:33
ここは顔文字スレになりました。よろしくね ;-P

417:デフォルトの名無しさん
06/03/09 11:56:57
問題だ
1+1=


418:デフォルトの名無しさん
06/03/09 12:14:22
11

419:デフォルトの名無しさん
06/03/09 12:24:33
10説も提唱するか。

420:デフォルトの名無しさん
06/03/09 12:34:32
Error: '=' の左が左辺値ではありません

421:デフォルトの名無しさん
06/03/09 13:24:56
Error: '=' で式が終わっています

422:デフォルトの名無しさん
06/03/09 23:36:01
Error : 予期せぬ問題が出題されました

423:デフォルトの名無しさん
06/03/10 00:06:04
符号付整数除算で四捨五入の処理について質問があります。
a÷b の結果を四捨五入して ret に取得する処理を以下のようにしました。

[バージョンA]
// 除数と被除数の符号チェック
if ((a ^ b) < 0) {
  // a, bが異符号
  // ret = (a / b) - (1 / 2)
  ret = (2 * a - b) / (2 * b);
}
else {
  // a, bが同符号
  // ret = (a / b) + (1 / 2)
  ret = (2 * a + b) / (2 * b)
}

この方法だと正の場合0.5→1、負の場合-0.5→-1となり
数値0に対して正負の結果が対称になります。

(続く・・・)

424:423
06/03/10 00:07:03
今、実装したいと考えているのは
除算結果の整数部: n、小数部: s (s >= 0) としたとき
四捨五入後の結果
・s < 0.5 のとき n
・s >= 0.5 のとき n + 1
[実例]
・-0.6 = -1 + 0.4 = -1 + 0 = -1
・-0.5 = -1 + 0.5 = -1 + 1 = 0
・-0.4 = -1 + 0.6 = -1 + 1 = 0
・0.4 = 0 + 0.4 = 0 + 0 = 0
・0.5 = 0 + 0.5 = 0 + 1 = 1
としたいのですが、上手い方法が見つかりません。
一応、自分なりに考えて以下のように実装したら上手くいきました。

[バージョンB]
if ((a ^ b) < 0) {
  // 正数にして計算を行う
  a = abs(a); b = abs(b);
  // ・整数除算の結果を -1 したもの
  // ・小数部を割合化したもの(?)である (b - (a % b)) / b + (1 / 2) を四捨五入したもの
  // を加えて求める。
  ret = -(a + b) / b + (2 * (b - (a % b)) + b) / (2 * b);
}
else {
  ret = (2 * a + b) / (2 * b);
}

除数、被除数の符号チェックをしたりしてスマートではないので
もっとシンプルにできる整数演算での上手い方法はあるのでしょうか?
よろしくお願いします。

425:デフォルトの名無しさん
06/03/10 00:11:33
0.5足して切り捨てしちゃ駄目?

426:423
06/03/10 01:16:10
>>425
画像処理で使用するため浮動小数点は、できるだけ使用しないようにしています。
ちなみにバージョンA,Bともに四捨五入をするときは
ret = (a / b) + 0.5
 = (a / b) + (1 / 2)
 = (2 * a + b) / (2 * b) ←通分(だったっけ?)
のように0.5を足すようにしています。

427:423
06/03/10 01:32:01
ちょっと言葉足らずだったので補足を・・・

単純に0.5を足して切り捨てると除算結果が負数の場合に問題があるのです。
(たとえば、結果が-2のときは -2.0+0.5 → -1.5 → -1になってしまう)
そのためにバージョンAでは、除算の結果が正負で場合わけをして
+0.5か-0.5を切り分けることにしました。

428:デフォルトの名無しさん
06/03/10 02:46:54
>画像処理で使用するため浮動小数点は、できるだけ使用しないように
そもそもここに間違いがあると思うだけどな

429:デフォルトの名無しさん
06/03/10 11:44:35
>424
方法はそれしかない。可搬性を確保したい場合符号チェックは必然。

挙げられた例題は結果の精度として整数値しか必要でない
(小数点以下0ビットの精度)場合の固定小数点演算と看做すことができる。
固定小数点演算とは例えば小数点以下に2ビットの精度が必要な場合に
3ビット下駄を履かせて1→8、0.5→4とするなどして整数演算によって
一定精度の実数演算を行う方法だ。

その場合結局四捨五入の処理も必要になる。
最下位ビットが0か1かを決めるために剰余を使うのもまさに例題と同じだ。
(固定小数点演算という枠組みで考える理由は精度が異なる場合も
同じ考え方で統一的に考えられるというだけだ。)

そして符号の処理も結局必要になる。
ただ、符号付整数除算のハードウェア仕様としてはAもBもありえて、
ハードウェアの仕様を調べてそれに依存するなら処理を省略できる可能性はある。
通常の整数は2の補数表示をすることで正数に対する処理を転用して
負数を扱っているで0に対して表現が元々対称でない。
だからBバージョンが目当てなら見込みは割とある。
ハードウェアに依存しちゃうけどね。

430:デフォルトの名無しさん
06/03/10 11:58:45
訂正
2ビットの精度が必要な場合→3ビットの精度が必要な場合

精度は悪化するけど2bitの精度が必要な場合に3bit取って
剰余は見ないで最下位ビットだけ見て四捨五入って手はあるけどね。

431:423
06/03/10 14:08:49
色々とありがとうございます。
やはり、符号チェックは必要なのですね・・・

浮動小数を使いたくないというのは、参考にしているライブラリの処理速度を計測したところ
その結果から浮動少数は使っていないと思われるためです。
ちなみに、そのライブラリは Win32API のウィンドウとビューポート間の座標変換処理で
比較対照としているものは LPtoDP() という関数です。
こいつが結構くせもので、整数部を n 、小数部を s としたとき
だいたい s >= 0.47 で四捨五入して n + s → n + 1 としているのです。
(負数の場合も -1.53 = -2.0 + 0.47 = -1 [入]、-1.54 = -2.0 + 0.46 = -2 [捨])
上記のように、四捨五入の仕様は>>424のバージョンBと同じです。

整数演算で 0.47 くらいで四捨五入なんて特殊なことをしているので
何か整数演算独自の四捨五入の方式があるのかと思い質問させていただきました。
個人的にはバージョンBの除数、被除数の符号が異なる場合に
除算を2回行うというのに満足できないので、もう少し紙とペンで色々と考えてみます。

432:デフォルトの名無しさん
06/03/10 15:50:22
サンプルを少数表記じゃなくて整数比で示してくれないか?
その方が解析しやすい。

433:デフォルトの名無しさん
06/03/10 15:55:04
知ってるかどうか知らないが、
小数点以下の数を10進表記するとそれだけで誤差が含まれる。
だからこの場合、実数に換算しないで考えたほうがよい。
つまり計算させてる事例に関わる整数の比がないと
何が行われているか正確なことはわからない。
LPtoDP()ってことは窓の大きさとディスプレイの解像度が絡むんだろ?

434:デフォルトの名無しさん
06/03/10 16:18:42
固定少数点で負数の時だけ処理するのを条件判断を使わずにやりたいなら、
ret = (2 * a + b*sgn) / (2 * b);
として sgn を 1か-1にすればいい
あるいは
ret = (2 * a + b*(sgn+1)-b) / (2 * b);

とすれば sgn+1 は 0か2なので 0か-1の変数fを使い
ret = (2 * a-b + 2*b&f) / (2 * b);

xor結果の最上位で fを-1か0にすればいい

 ・右へのビット幅だけシフト
 ・インラインアセンブラを使って符号拡張命令

 して、符号ビットを埋めて ゴチャゴチャやる方法があるけど、そんなの使いたい?



435:デフォルトの名無しさん
06/03/10 16:27:53
他に
ret = (2 * a + (b^t)) / (2 * b);

として tを 0か-1とする方法もある
でもたぶん
ret = ( a + ((b^t)>>1) ) / b;

あたりでやってんじゃないかな


436:423
06/03/10 18:01:03
みなさん、どうもありがとうございます。
>>432 >>433
座標変換のための設定は以下の通りです。

// マッピングモード設定
::SetMapMode(hDc, MM_ANISOTROPIC);
// ウィンドウ領域 (0, 0) - (1000, 1000)
::SetWindowExtEx(hDc, 1000, 1000, NULL);
::SetWindowOrgEx(hDc, 0, 0, NULL);
// ビューポート設定 (0, 0) - (10, 10)
::SetViewportExtEx(hDc, 10, 10, NULL);
::SetViewportOrgEx(hDc, 0, 0, NULL);

単純にウィンドウからビューポートへ(1/100)倍する変換です。
ウィンドウ、ビューポートのx座標をそれぞれ wx, vx として
-1000 <= wx <= 1000 の範囲で変換してます。
変換式は憶測ですが
vx = wx * (10 / 1000)
で求めていると思われます。
四捨五入の「入」、「捨」の境界は以下のとおり 0.46〜0.47 です。
(これ以外の146, 246, ...、-154, -254, ... でも同様の結果です)

wx = -54 → vx = -1 (-54/100 → -0.54 → -1 + 0.46 → -1)
wx = -53 → vx = 0 (-53/100 → -0.53 → -1 + 0.47 → 0)
wx = 46 → vx = 0 (46/100 → 0.46 → 0 + 0.46 → 0)
wx = 47 → vx = 1 (47/100 → 0.47 → 0 + 0.47 → 1)

>>434
その方法だと>>423のバージョンAと同じになってしまうんです。
今は>>424のバージョンB方式の四捨五入の実装方法で迷ってるんです。

437:423
06/03/10 18:03:48
追加情報で、ウィンドウ領域とビュー領域の数値は32bit(int型)で設定可能なのですが
MSDNで調べたところウィンドウ領域は32bitを保証してビューポートは27bitしか保証しないと
明記されてます。
残り5bitを小数部とした固定小数点で計算とかをしているんですかね?

438:434
06/03/10 18:21:37
>>436
折角書いてやったんだから、ちゃんと読め!

いいか その>>424のバージョンB ってのは a/bの符号によって
符号負  ret = (2 * a - b) / (2 * b);
符号正  ret = (2 * a + b) / (2 * b)

としたいわけだろ?
符号を sgn +1/-1 なら

 ret = (2 * a - b*sgn) / (2 * b);

だろが! 


439:デフォルトの名無しさん
06/03/10 18:57:40
>>438
論外

ポイントになるのは、0.1刻みとして(-2.5〜-1.6), (-1.5〜-0.6), (-0.5〜0.4), (0.5〜1.4)
をどうやって同じグループにするかということ

440:デフォルトの名無しさん
06/03/10 19:21:54
素直に floor(val + 0.5) いっとく?

441:434
06/03/10 19:27:10
ああ、そりゃ悪かったな。 しかし多少修正すりゃいいことじゃないか 
単に >>435の符号を入替えて

int div(int x,int y){
int sgn=x^y;
sgn=sgn>>31;
return (x-((-y^sgn)>>1))/y;
}

x/y = div(x,y)
-20/10= -2
-19/10= -2
-18/10= -2
-17/10= -2
-16/10= -2
-15/10= -1 -5/10= 0 5/10= 1 15/10= 2
-14/10= -1 -4/10= 0 6/10= 1 16/10= 2
-13/10= -1 -3/10= 0 7/10= 1 17/10= 2
-12/10= -1 -2/10= 0 8/10= 1 18/10= 2
-11/10= -1 -1/10= 0 9/10= 1 19/10= 2
-10/10= -1 0/10= 0 10/10= 1 20/10= 2
-9/10= -1 1/10= 0 11/10= 1
-8/10= -1 2/10= 0 12/10= 1
-7/10= -1 3/10= 0 13/10= 1
-6/10= -1 4/10= 0 14/10= 1

これでいいんだろ?

442:434
06/03/10 19:32:15
たぶん、
ホントは四捨五入でret = (2 * a + (b^t)) / (2 * b) を使いたかったけど2つある2倍が嫌なんで
ret = ( a + ((b^t)>>1) ) / b;  としたら、プラス側が6で変化したんで
ret = ( a - ((-b^t)>>1) ) / b; として、まあマイナス側に-6で変化したっていいやで 計算量優先にしたんだろ


443:434
06/03/10 19:59:13
いや、もしかして
abs(x) の代わりに (x>>31)^x のようなのを使ってて出た誤差かな

444:デフォルトの名無しさん
06/03/10 20:05:54
(2*a + 2*a*a*b - b) / (2*b) + 1 - a*a

445:デフォルトの名無しさん
06/03/10 20:28:42
>>423
またおまえか。

446:423
06/03/10 21:07:51
みなさん、ありがとうございます。
とても参考になりました。

特に>>434さんの方法には脱帽しました。
異符号の場合に -1 と XOR して1の補数を用いるなんて思いもつきませんでした。
と言っても、まだ完全には理解できてはいないのですが
先にお礼を言っておきたかったので。

本当にありがとうございました。

447:434
06/03/10 21:28:04
ごめん。 変な方法使うより
#include <stdlib.h> に div という関数がある 除算とあまりを出す関数だ

div_t d=div(x+y/2,y);
if(d.rem<0) d.quot--; で d.quot を使えばいい

条件判断を無くしたいなら d.quot+d.rem>>31 でいい

たぶんコレが正解だろう

448:434
06/03/10 21:30:52
ようするに、結果見ると、変な四捨五入じゃなくて
普通の四捨五入をやりたいって事にやっと気付いた。 すまんな。

449:434
06/03/10 21:40:25
ちなみに試したコード
#include <stdlib.h>

int divd(int x,int y){
div_t d=div(x+y/2,y);
return d.quot+(d.rem>>31);
}

int divd(int x,int y){
div_t d=div(x*2+y,y*2);
return d.quot+(d.rem>>31);
}

結果はどっちも >>441 と y=10では同じになる

450:434
06/03/10 22:11:31
言い訳すると >>427 で 
>単純に0.5を足して切り捨てると除算結果が負数の場合に問題があるのです
に騙されてしまった。

単純に0.5を足して切り捨てるのをやりたかったのだろう。

ただ、X86では除算の結果が負数になる場合は余りも負数になる。
a/b= n余りsなら
a = n*b + s = s+b+(n-1)*b となる修正をすればいい
アセンブラで書けば、
  cdq
  idiv
  sqr edx,#31
  add eax,edx
と4命令



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5374日前に更新/259 KB
担当:undef