AtCoder Beginner Contest #006 A問題 - 世界のFizzBuzz

Source

AtCoder Beginner Contest #006
問題文

問題概要

正整数 $N$ が与えられるので,「$N$ が $3$ で割り切れる,または,$N$ の $10$ 進数表示に $3$ という数字が含まれる」という条件をみたすかどうかを判定する問題.

解法

$N$ は $1$ 桁なので,$3$ を含むのは $N=3$ のときのみで,それは $3$ で割り切れるから,$3$ を含むかどうかは調べる必要はない.

C++によるスパゲッティなソースコード

#include<cstdio>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<algorithm>
#include<string>
#include<utility>
#include<iostream>
#include<cmath>
using namespace std;

#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

void reader(int *x){int k,m=0;*x=0;for(;;){k=getchar_unlocked();if(k=='-'){m=1;break;}if('0'<=k&&k<='9'){*x=k-'0';break;}}for(;;){k=getchar_unlocked();if(k<'0'||k>'9')break;*x=(*x)*10+k-'0';}if(m)(*x)=-(*x);}
void writer(int x, char c){int i,sz=0,m=0;char buf[10];if(x<0)m=1,x=-x;while(x)buf[sz++]=x%10,x/=10;if(!sz)buf[sz++]=0;if(m)putchar_unlocked('-');while(sz--)putchar_unlocked(buf[sz]+'0');putchar_unlocked(c);}
void writer(const char c[]){int i;for(i=0;c[i]!='\0';i++)putchar_unlocked(c[i]);}
void writer(const char c[], int len){int i;rep(i,len)putchar_unlocked(c[i]);}

int main(){
  int n;

  reader(&n);
  if(n%3) writer("NO\n");
  else    writer("YES\n");

  return 0;
}

Current time: 2017年11月19日12時17分47秒
Last modified: 2014年05月24日04時07分54秒 (by laycrs)
Tags: Competitive_Programming AtCoder AtCoder_Beginner_Contest ABC006 ABC_A
トップページに戻る

Logged in as: unknown user (not login)

ログイン: