静かで孤独な日記

のんびりたまに

yukicoder No.593 4進FizzBuzz

  • 数が大きくなる気がするので文字列で受け取ってループ回してやっていきましょう。
  • 毎度毎度余りを管理しておけば良いだけなのでやってる事は簡単ですね。
  • こんな様な考え方で桁dpとかもやりますよね。
  • あと、解説にある豆知識は必見ですね。(全く知りませんでした)
#include<bits/stdc++.h>
#define ll long long
using namespace std;

string s;

int main(){
  cin>>s;
  int n=(int)s.size();
  int now3=0,now5=0;
  for(int i=0;i<n;++i){
    now3*=4;
    now5*=4;
    now3+=(int)(s[i]-'0');
    now5+=(int)(s[i]-'0');
    now3%=3;
    now5%=5;
  }
  now3%=3;now5%=5;
  if(now3==0 && now5==0)cout<<"FizzBuzz"<<"\n";
  else if(now3==0)cout<<"Fizz"<<"\n";
  else if(now5==0)cout<<"Buzz"<<"\n";
  else cout<<s<<"\n";
  return 0;
}