【ABC】 164 D - Multiple of 2019 (C++)
「ABC 164 D - Multiple of 2019」をC++で実装しようとした。
数年ぶりにC++を触ることになる。
intの範囲とかをもう少し勉強する必要がある。
・参考ページ:
【C言語入門】整数(int、long int、short int)の使い方 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
「1000000007 で割ったあまり」の求め方を総特集! 〜 逆元から離散対数まで 〜 - Qiita
C++ の多倍長整数型・多倍長浮動小数点数型 : boost::multiprecision の競技プログラミングでの使い方メモ - Qiita
pythonでは特に気にしていなかった。 pythonの中身はどうなってんだ。
#include <iostream> #include <vector> #include <string> #include <stdio.h> using namespace std; int main(){ string S; cin >> S; const unsigned long int N = S.size(); unsigned long int value = 0; unsigned long int t = 1; const unsigned long int mod = 2019; vector<int> DP(mod, 0); DP[0] = 1; for(int i=N-1; i>-1 ;i--){ value += (int(S[i]) - int('0')) * t; //cout << int(S[i]) - int('0') << ' ' << value << ' ' << value % mod << ' ' << (int(S[i]) - int('0')) * t << ' ' << t << endl; DP[value % mod] += 1; t *= 10; } int num = 0; for (int i=0; i<mod; i++){ num += DP[i] * (DP[i] - 1)/2; } cout << num << endl; return 0; }