6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【C++】負の数を正の数で割ったときの余りを求める

Last updated at Posted at 2020-02-22

#はじめに
ABC156で負の数を割ることを考慮した計算が必要だったので忘れないように書き起こします。

#コード

#include <iostream>
using namespace std;

const int MOD = 5;
int main(void){
    //この書き方だと正しく求められない
    cout << -32%MOD << endl;//want:3 out:-2
    cout << -31%MOD << endl;//want:4 out:-1
    cout << -30%MOD << endl;//want:0 out:0
    
    //この書き方なら正しく求められる
    cout << (-32%MOD+MOD)%MOD << endl;//want:3 out:3
    cout << (-31%MOD+MOD)%MOD << endl;//want:4 out:4
    cout << (-30%MOD+MOD)%MOD << endl;//want:0 out:0
}

#終わりに
C++なら上記ソースコードの後半部のように書けばOKです。ABC156-D問題はこれで通せました。

【コメント欄での補足】
C++11 以降は余剰の符号が言語仕様で規定されたようです。C++11 以降なら負数に対する剰余演算はあまり気にせず行えばよいとのことです。ご指摘ありがとうございます。

6
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?