2014년 10월 3일 금요일

DIVIS

AOJ DIVIS
 
SOL)

주어진 주열의 값이 61로 나누어지나?
MOD연산은 나눗셈이 없는 다항식에 대하여 분배법칙이 성립한다.
따라서 62 % 61 = 1이므로 다항식의 N승들을 생략해주고 더해주면 된다.

[-] Collapse
#include<iostream>
#include<string>
using namespace std;
int table[123];
int main(){
    for (int i = '0', val = 0; i <= '9'; i++, val++)
        table[i] = val;
    for (int i = 'A', val = 10; i <= 'Z'; i++, val++)
        table[i] = val;
    for (int i = 'a', val = 36; i <= 'z'; i++, val++)
        table[i] = val;

    string str;
    while (true){
        cin >> str;
        if (str == "end") break;

        int len = str.size();
        int sum = 0;
        for (int i = 0; i < str.size(); i++)
            sum += table[str[i]];

        sum % 61 == 0 ? cout << "yes" << endl : cout << "no" << endl;
    }
    return 0;
}

댓글 없음:

댓글 쓰기