您的位置:首页 > 其它

poj 1365(素数分解。。。)

2011-08-15 10:56 344 查看
简单的一个水题。。。输出的时候,我记着曾经校赛的时候有一个题直接计算输出会超时,但这个不卡时间,所以都可以。。。

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int ans[32800],prim[32800],p;
int main(){
char a[10000];
int i,j,k,n,s,sum;
memset(prim,1,sizeof(prim));
prim[0]=prim[1]=0;
for(i=2;i<32800;i++)
if(prim[i]){
for(j=i+i;j<32800;j+=i)
prim[j]=0;
}
while(gets(a)){
if(a[0]=='0') break;
for(n=1,i=0;i<strlen(a);){
k=0;s=0;
while(a[i]!=' '){
k=k*10+(a[i]-'0'); i++;
} i++;
while(a[i]!=' ' && i<strlen(a)){
s=s*10+(a[i]-'0'); i++;
} i++;
n=n*pow(1.0*k,s);
}
n--;p=0;sum=0;
while(n!=1){
for(i=n;;i--)
if(prim[i] && n%i==0)
break;
ans[p++]=i;sum=0;
while(n%i==0){
n/=i; sum++;
}
ans[p++]=sum;
}
printf("%d",ans[0]);
for(i=1;i<p;i++)
printf(" %d",ans[i]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: