結果

問題 No.2624 Prediction by Average
ユーザー zawakasuzawakasu
提出日時 2024-02-09 22:37:25
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 1,830 bytes
コンパイル時間 2,112 ms
コンパイル使用メモリ 202,544 KB
実行使用メモリ 6,676 KB
最終ジャッジ日時 2024-02-09 22:37:28
合計ジャッジ時間 2,491 ms
ジャッジサーバーID
(参考情報)
judge11 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,676 KB
testcase_01 WA -
testcase_02 WA -
testcase_03 AC 2 ms
6,676 KB
testcase_04 WA -
testcase_05 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>




namespace zawa {

using i16 = std::int16_t;
using i32 = std::int32_t;
using i64 = std::int64_t;
using i128 = __int128_t;

using u8 = std::uint8_t;
using u16 = std::uint16_t;
using u32 = std::uint32_t;
using u64 = std::uint64_t;

using usize = std::size_t;

} // namespace zawa


namespace zawa {

void SetFastIO() {
    std::cin.tie(nullptr)->sync_with_stdio(false);
}

void SetPrecision(u32 dig) {
    std::cout << std::fixed << std::setprecision(dig);
}

} // namespace zawa



namespace zawa {

i64 FloatingMarkerShift(const std::string& S, u32 shift) {
    static i64 lim10{std::numeric_limits<i64>::max() / 10};
    assert(not S.empty());
    i64 res{};
    u32 moved{};
    bool start{};
    bool minus{S[0] == '-'};
    for (u32 i{(u32)minus} ; i < S.size() ; i++) {
        if (S[i] == '.') {
            start = true;
        }
        else {
            if (start) moved++;
            assert(res < lim10);
            res = res * 10;
            assert(res < std::numeric_limits<i64>::max() - (S[i] - '0'));
            res += S[i] - '0';
        }
    }
    assert(moved <= shift);
    while (moved < shift) {
        moved++;
        assert(res < lim10);
        res = res * 10;
    }
    if (minus) res *= -1;
    return res;
}

}// namespace zawa
using namespace zawa;

long long solve() {
    long long n; std::cin >> n;
    std::string in; std::cin >> in;
    long long s{FloatingMarkerShift(in, 3)};
    long long ans{std::max(0LL, n - 1000 + 1)};
    for (long long i{1} ; i <= std::min(n, 999LL) ; i++) {
        long long ns{s * i}, ns1{(s + 1) * i};
        if ((ns1 / 1000) > (ns / 1000) or (ns % 1000 == 0)) ans++;
    }
    return ans;
}

int main() {
    SetFastIO();

    int t; std::cin >> t;
    for (int _{} ; _ < t ; _++) {
        std::cout << solve() << '\n';
    }
}
0