您的位置:首页 > 其它

HDU 2964 Prime Bases 数论 水

2012-12-03 21:40 441 查看
View Code

#include<cstdio>
#include<cstring>
int p[15] = {1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
int a[15];
int main()
{
int i, j, k, n;
while( ~scanf("%d", &n) && n)
{
printf("%d = ", n);
int s = 1;
for(i = 0; i < 13; i++)
{
s *= p[i];
if(i < 13 && (__int64)s * p[i+1] > (__int64)n )
break;
}
j = i;
memset(a, 0, sizeof(a)); // pay attention;
while(n)
{
a[i] = n/s;
n -= a[i]*s;
s /= p[i--];
}
bool flag = 0;
for(i = 0; i <= j; i++)
{
if(!a[i]) continue;
if(!i) {flag = 1, printf("%d", a[0]); continue; }
if(flag)
printf(" + ");
else
flag = 1;
printf("%d", a[i]);
for(k = 1; k <= i; k++)
printf("*%d", p[k]);
}
puts("");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: