남방 우편 OJ 1153 Ray 수

레이 수
시간 제한(일반/자바) : 
1000 MS/ 3000 MS          실행 메모리 제한:32768 KByte
총 제출:219           테스트 통과:111 
경기 설명
레이 는 어 렸 을 때 부터 특이 한 것 을 좋아 했 고 천성적으로 숫자 에 민감 했다.우연 한 기회 에 그 는 재 미 있 는 네 자리 2992 를 발견 했다.이 숫자 는 십 진법 에 따 르 면 네 자리 숫자의 합 은 2+9+2=22 이 고 16 진수 BB0 이 며 네 자리 숫자의 합 도 22 이다.이 동시에 12 진법 은 1894 를 나타 내 고 네 자리 숫자의 합 도 22 이다.아하.우연 이 네.레이 는 이런 네 자릿수 를 매우 좋아한다.그의 발견 으로 인해 우 리 는 레이 수 라 고 명명 했다.하지만 이런 숫자 를 판단 하 는 것 은 좀 번 거 롭 습 니 다.그럼 지금 은 10 진법 의 네 자릿수 가 레이 수 인지 아 닌 지 판단 해 주세요.
입력
입력 은 네 자리 의 정 수 를 포함 하고 0 이면 입력 이 끝 납 니 다.
출력
n 이 Ray 이면 출력\#n is a 레이 번호.",그렇지 않 으 면 출력"\#n is not a Ray Number.”。결과 마다 한 줄 을 차지한다.메모:\#n 은 읽 은 n 값 을 표시 합 니 다.
샘플 입력
2992 1234 0
샘플 출력
2992 is a Ray Number. 1234 is not a Ray Number.
제목 출처
HDU OJ
#include<iostream>
using namespace std;

bool is_ray(int &n){
	int sum,temp=n,s=0;
	while(temp){
		s += temp%10;
		temp /= 10;
	}
	sum = s;
	temp = n;
	s = 0;
	while(temp){
		s += temp%16;
		temp /= 16;
	}
	if(sum != s){
		return 0;
	}
	temp = n;
	s = 0;
	while(temp){
		s += temp%12;
		temp /= 12;
	}
	if(sum != s){
		return 0;
	}
	return 1;
}

int main(){
	int n;
	while(cin>>n && n){
		if(is_ray(n)){
			cout<<n<<" is a Ray Number."<<endl;
		}else{
			cout<<n<<" is not a Ray Number."<<endl;
		}
	}
}

좋은 웹페이지 즐겨찾기