質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

3回答

818閲覧

変数の途中経過がみたい

SmaSTATION

総合スコア29

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/10/25 06:27

前提

下記のプログラムのmidの変数を途中経過として出力したいのですが、うまくいきません。
最初のmidの直後にprintfをするとmid=mid=mid=mid=mid=(数値)になってしまいました...

実現したいこと

ここに実現したいことを箇条書きで書いてください。
・midの途中経過が見たい

該当のソースコード

C++

1#include <iostream> 2#include <algorithm> 3#include <vector> 4using namespace std; 5 6int main() { 7 // 入力 8 int N; 9 cin >> N; 10 vector<long long> H(N), S(N); 11 for (int i = 0; i < N; i++) cin >> H[i] >> S[i]; 12 13 // 二分探索の上限値を求める 14 long long M = 0; 15 for (int i = 0; i < N; ++i) M = max(M, H[i] + S[i] * N); 16 17 printf("M=",M); 18 19 // 二分探索 20 long long left = 0, right = M; 21 while (right - left > 1) { 22 long long mid = (left + right) / 2; 23 24 // 判定する 25 bool ok = true; 26 vector<long long> t(N, 0); // 各風船を割るまでの制限時間 27 for (int i = 0; i < N; ++i) { 28 // そもそも mid が初期高度より低かったら false 29 if (mid < H[i]) ok = false; 30 else t[i] = (mid - H[i]) / S[i]; 31 } 32 // 時間制限がさし迫っている順にソート する 33 sort(t.begin(), t.end()); 34 for (int i = 0; i < N; ++i) { 35 // 時間切れ発生の場合は false 36 if (t[i] < i) ok = false; 37 } 38 if (ok) right = mid; 39 else left = mid; 40 41 } 42 43 cout << right << endl; 44}

試したこと

・最初のmidの直後に出力文
・mid直後のfor文の後に出力文。

補足情報(FW/ツールのバージョンなど)

二分探索のプログラムです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2022/10/25 06:29

うまくいかなかったコードを貼ってください
kazuma-s

2022/10/25 07:47

printf("M=",M); とありますが、printf の書き方を知らないのですか?
atcoderyellow

2022/10/26 03:00

下手なプログラマーで、大変お騒がせしました。 恥ずかしい限りです。
guest

回答3

0

最初のmidの直後にprintfをするとmid=mid=mid=mid=mid=(数値)になってしまいました...

printfの引数を書き間違えたのではないでしょうか。long longを出力するには%lldのような指定が必要です。

投稿2022/10/25 06:38

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2022/10/25 06:30

atcoderyellow

総合スコア481

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

atcoderyellow

2022/10/26 03:00

下手なプログラマーで、大変お騒がせしました。 恥ずかしい限りです。
guest

0

C++ で cin を使っているんだから、printf の代わりに cout を使って、
cout << "mid=" << mid << endl; と書いてみてください。

投稿2022/10/25 17:07

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問