結果
問題 | No.2127 Mod, Sum, Sum, Mod |
ユーザー | 👑 p-adic |
提出日時 | 2022-10-28 15:57:58 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,517 bytes |
コンパイル時間 | 1,976 ms |
コンパイル使用メモリ | 199,692 KB |
実行使用メモリ | 10,624 KB |
最終ジャッジ日時 | 2024-07-05 20:12:05 |
合計ジャッジ時間 | 5,128 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | TLE | - |
testcase_03 | -- | - |
testcase_04 | -- | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
ソースコード
// O( min( N , M ) )の愚直解チェック #include<bits/stdc++.h> using namespace std; using ll = long long; #define TYPE_OF( VAR ) remove_const<remove_reference<decltype( VAR )>::type >::type #define UNTIE ios_base::sync_with_stdio( false ); cin.tie( nullptr ) #define CIN( LL , A ) LL A; cin >> A #define ASSERT( A , MIN , MAX ) assert( MIN <= A && A <= MAX ) #define CIN_ASSERT( A , MIN , MAX ) CIN( TYPE_OF( MAX ) , A ); ASSERT( A , MIN , MAX ) #define FOREQ( VAR , INITIAL , FINAL ) for( TYPE_OF( FINAL ) VAR = INITIAL ; VAR <= FINAL ; VAR ++ ) #define QUIT return 0 #define RETURN( ANSWER ) cout << ( ANSWER ) << "\n"; QUIT int main() { UNTIE; constexpr const ll bound = 1000000000; CIN_ASSERT( N , 1 , bound ); CIN_ASSERT( M , 1 , bound ); // sum( ll i = 1 ; i <= N ; i++ ) sum( ll j = 1 ; j <= M ; j++ ){ i % j } // = sum( ll j = 1 ; j <= M ; j++ ) sum( ll i = 1 ; i <= N ; i++ ){ i % j } // = sum( ll j = 1 ; j <= M ; j++ ){ ( N / j ) * ( ( j - 1 ) * j ) / 2 + ( N % j ) * ( N % j + 1 ) / 2 } // = sum( ll j = 1 ; j <= M ; j++ ){ ( N / j ) * ( ( j - 1 ) * j ) / 2 + ( N % j ) * ( N % j + 1 ) / 2 } constexpr const ll P = 998244353; ll answer0 = 0; ll answer1 = 0; if( M > N ){ M = N; } ll N_r; ll j_sum = 0; FOREQ( j , 1 , M ){ N_r = N % j; j_sum = ( j_sum + j - 1 ) % P; answer0 += ( ( N / j ) * j_sum ) % P; answer1 += ( N_r * ( N_r + 1 ) ) % P; } answer1 = ( answer1 % P ) * ( ( P + 1 ) / 2 ); RETURN( ( answer0 + answer1 ) % P ); }