[C++]伯準1009:分散処理


#include <iostream>

int main(int argc, char **argv){
    int T, a, b, tmp = 1;
    scanf("%d",&T);
    for(int i=0; i<T; i++){
        scanf("%d %d",&a,&b); // 1의 자리만 알면 된다.
        // 그냥 pow 불가능, 범위 넘는다.
        for(int j=0; j<b; j++){
            tmp = (tmp * a) % 10;
        }
        if(tmp == 0){
            printf("10\n"); // 나머지 0이면 10이다.
        } else {
            printf("%d\n",tmp);
        }
        tmp = 1; // 초기화
    }

    return 0;
}

今日のポイント

  • powを使うと数字は幾何級数で大きくなるので使えません.
  • 必要なのは1の桁数だけです.平方でも、1の桁数を平方で求めればいいのです.
  • 10の剰余を求めたので、10で割ったときの剰余が0であれば、これが10台目のコンピュータに割り当てられた剰余であり、0であれば10を出力すべきである.