PKU 1365 Prime Land

http://poj.org/problem?id=1365
素数進数?みたいな入力が与えられるので、1引いて、また素数進数にして出力するというような問題。

10進数にして1引いて、また素数進数にして出力しました。
最初入力の意味がよくわからなくて戸惑いました。

main(){
  string in;
  while(getline(cin,in),in!="0"){
    stringstream ss(in);
    int num=1;
    int p,e;
    while(ss>>p>>e){
      rep(i,e)num*=p;
    }

    --num;
    map<int,int>app;
    for(int i=2;i*i<=num;++i){
      while(num%i==0){
        num/=i;
        ++app[-i];
      }
    }
    if(num>1)++app[-num];
    FOR(it,app)cout<<-it->F<<' '<<it->S<<' ';cout<<endl;
  }
}