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; } }