文字列のmod

Quiz

https://yukicoder.me/problems/no/747

AC Code

https://yukicoder.me/submissions/353782

文字列のmod

  • 前提:10000桁などはlong longに収まらないので文字列として受け取って処理する
  • そういう巨大な数のmod2, mod3, mod6の求め方は以下

  • mod 2

    • 1の位を見れば簡単
  • mod 3
    • 「全桁の和==3の倍数なら、その数値は3の倍数」
      • (例 111111は3の倍数)
    • を利用すると、和 mod 3から求まる
  • mod 6
    • mod 2, mod 3を利用すれば求まる
ll mod6(ll mod2, ll mod3){
    if(mod2==0 && mod3==0) return 0;
    if(mod2==1 && mod3==1) return 1;
    if(mod2==0 && mod3==2) return 2;
    if(mod2==1 && mod3==0) return 3;
    if(mod2==0 && mod3==1) return 4;
    if(mod2==1 && mod3==2) return 5;
}

k=101000000 を文字列で受け取ってmod

ll bigMod(string s, ll mod){
    int tmp=0;
    FOR(i, 0, s.size()){
        tmp = (tmp*10+s[i]-'0') % mod;
    }
    return tmp;
}